html中鼠标滚轮事件onmousewheel的处理方法


Posted in Javascript onNovember 11, 2016

滚轮事件是不同浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法绑定DomMouseScroll事件,其他的浏览器滚轮事件使用mousewheel,下面我来给大家具体介绍。

Firefox使用DOMMouseScroll,其他的浏览器使用mousewheel。滚动事件触发时Firefox使用detail属性捕捉滚轮信息,其他的浏览器使用wheelDelta。不知道为何在该问题上其他厂商和微软的如此一致。Firefox可以使用addEventListener方法绑定DomMouseScroll事件。

elem.addEventListener(‘DOMMouseScroll', func, false);IE和其他的主流浏览器可以使用传统的事件绑定模型。但不要使用IE专有的attachEvent方法,其他主流浏览器并不识别微软的这个方法。

Firefox 鼠标滚轮向上滚动是-3,向下滚动是3

IE 鼠标滚轮向上滚动是120,向下滚动是-120

Safari 鼠标滚轮向上滚动是360,向下滚动是-360

Opera 鼠标滚轮向上滚动是120,向下滚动是-120

Chrome 鼠标滚轮向上滚动是120,向下滚动是-120

有人在Safari下做了一些测试:”只是滚动一圈的话,值为+-0.1,如果滚动地稍微快点的话(多滚动几圈),这个值也会变大。 这是因为Mac OS下有鼠标滚轮加速功能。滚动一次,浏览器滚动1像素,滚动3次,浏览器却滚动30像素”。同时他也对Camino(基于Gecko的内核引擎)进行研究:“与Safari相似(+- 0.3 to +-Infinity),虽然使用了与firefox相同的内核引擎,但结果这个delta值却只在+-2.666666里浮动,无论滚动速度如何

其中经我测试,IE/Opera属于同一类型,使用attachEvent即可添加滚轮事件。

/*IE注册事件*/  
if(document.attachEvent){  
  document.attachEvent('onmousewheel',scrollFunc);  
}

Firefox使用addEventListener添加滚轮事件

 

/*Firefox注册事件*/  
if(document.addEventListener){  
  document.addEventListener('DOMMouseScroll',scrollFunc,false);  
}

 Safari与Chrome属于同一类型,可使用HTML DOM方式添加事件

window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

其中除Firefox外其余均可使用HTML DOM方式添加事件,因此添加事件使用以下方式

/*注册事件*/  
if(document.addEventListener){  
  document.addEventListener('DOMMouseScroll',scrollFunc,false);  
}//W3C  
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome

detail与wheelDelta

判断滚轮向上或向下在浏览器中也要考虑兼容性,现在五大浏览器(IE、Opera、 Safari、Firefox、Chrome)中Firefox 使用detail,其余四类使用wheelDelta;两者只在取值上不一致,代表含义一致,detail与wheelDelta只各取两个 值,detail只取±3,wheelDelta只取±120,其中正数表示为向上,负数表示向下。

<p style="border-width:0px; padding-top:0px; padding-bottom:0px; margin-top:0px; margin-bottom:8px; list-style:none; text-indent:2em"><label for="wheelDelta"> 滚动值:</label>(IE/Opera)<input type="text" id="wheelDelta" style="border-width:0px; padding-top:0px; padding-bottom:0px; margin:0px; list-style:none"></p> 
<p style="border-width:0px; padding-top:0px; padding-bottom:0px; margin-top:0px; margin-bottom:8px; list-style:none; text-indent:2em"><label for="detail"> 滚动值:(Firefox)</label><input type="text" id="detail" style="border-width:0px; padding-top:0px; padding-bottom:0px; margin:0px; list-style:none"></p> 
<script type="text/javascript"> 
  var oTxt = document.getElementById("txt"); 
  var scrollFunc = function (e) { 
    var direct = 0; 
    ee = e || window.event; 
 
    var t1 = document.getElementById("wheelDelta"); 
    var t2 = document.getElementById("detail"); 
    if (e.wheelDelta) {//IE/Opera/Chrome  
      t1.value = e.wheelDelta; 
    } else if (e.detail) {//Firefox  
      t2.value = e.detail; 
    } 
    ScrollText(direct); 
  } 
  /*注册事件*/ 
  if (document.addEventListener) { 
    document.addEventListener('DOMMouseScroll', scrollFunc, false); 
  }//W3C  
  window.onmousewheel = document.onmousewheel = scrollFunc; //IE/Opera/Chrome/Safari  
<p></script></p>

以上就是小编为大家带来的html中鼠标滚轮事件onmousewheel的处理方法全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
iis6+javascript Add an Extension File
Jun 13 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
Jan 24 Javascript
jquery.cookie用法详细解析
Dec 18 Javascript
js toFixed()方法的重写实现精度的统一
Mar 06 Javascript
20分钟打造属于你的Bootstrap站点
Jul 27 Javascript
javascript基于原型链的继承及call和apply函数用法分析
Dec 15 Javascript
AngularJS实现使用路由切换视图的方法
Jan 24 Javascript
原生JS实现N级菜单的代码
May 21 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
Jul 21 Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 Javascript
JS如何实现封装列表右滑动删除收藏按钮
Jul 23 Javascript
javascript实现智能手环时间显示
Sep 18 Javascript
Angularjs中的页面访问权限怎么设置
Nov 11 #Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 #Javascript
通过扫描二维码打开app的实现代码
Nov 10 #Javascript
用JS动态设置CSS样式常见方法小结(推荐)
Nov 10 #Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 #Javascript
jquery日历插件e-calendar升级版
Nov 10 #Javascript
Vue.js开发环境搭建
Nov 10 #Javascript
You might like
很让人受教的 提高php代码质量36计
2012/09/05 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
2015/11/23 Javascript
移动端界面的适配
2017/01/11 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
JavaScript本地储存:localStorage、sessionStorage、cookie的使用
2020/10/13 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
中国医药集团国药在线:国药网
2017/02/06 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
如何开启linux的ssh服务
2013/06/03 面试题
What is EJB
2016/07/22 面试题
群教班子对照检查材料
2014/08/26 职场文书
医院病假条范文
2015/08/17 职场文书