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 相关文章推荐
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
js计算页面刷新的次数
Jul 20 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
Jun 29 Javascript
鼠标滚轮改变图片大小的示例代码
Nov 20 Javascript
jquery获取元素索引值index()示例
Feb 13 Javascript
jquery form 隐藏的input 选择
Apr 29 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
May 24 Javascript
js检查是否关闭浏览器的方法
Aug 02 Javascript
深入浅出webpack之externals的使用
Dec 04 Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
Nov 11 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给图片加水印的实现代码
2020/04/18 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
Yii框架 session 数据库存储操作方法示例
2019/11/18 PHP
lib.utf.js
2007/08/21 Javascript
JS input 数字验证代码
2009/07/30 Javascript
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
Koa2微信公众号开发之消息管理
2018/05/16 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
小程序自定义日历效果
2018/12/29 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
2019/08/23 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
2020/12/07 Vue.js
python中threading超线程用法实例分析
2015/05/16 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
python实现AES加密解密
2019/03/28 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
财务出纳员岗位职责
2013/11/26 职场文书
护理专业毕业生自荐信范文
2014/01/05 职场文书
市场部业务员岗位职责
2014/04/02 职场文书
人力资源职位说明书
2014/07/29 职场文书
党支部先进事迹材料
2014/12/24 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python