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 相关文章推荐
javascript编程起步(第二课)
Jan 10 Javascript
javascript textContent与innerText的异同分析
Oct 22 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
Jun 14 Javascript
js Math 对象的方法
Sep 01 Javascript
网站内容禁止复制和粘贴、另存为的js代码
Feb 26 Javascript
JQuery中的事件及动画用法实例
Jan 26 Javascript
JavaScript实现重置表单(reset)的方法
Apr 02 Javascript
JavaScript获得表单target属性的方法
Apr 02 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
Apr 13 Javascript
Angular.js中数组操作的方法教程
Jul 31 Javascript
Vue 2.0学习笔记之Vue中的computed属性
Oct 16 Javascript
原生实现一个react-redux的代码示例
Jun 08 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的ob_start();控制您的浏览器cache!
2007/02/14 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
详解JavaScript的BUG和错误
2018/05/07 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
Python编写屏幕截图程序方法
2015/02/18 Python
Python常见工厂函数用法示例
2018/03/21 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
2018/05/29 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
python利用dlib获取人脸的68个landmark
2019/11/27 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
python中实现栈的三种方法
2020/12/19 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
学生周末长期请假条
2014/02/15 职场文书
保密承诺书
2014/03/27 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang