解析javascript中鼠标滚轮事件

2019-12-18,,

所有的现代浏览器都支持鼠标滚轮,并且在用户滚动滚轮时触发时间。浏览器通常使用鼠标滚轮滚动或缩放文档,但可以通过取消mousewheel事件来阻止这些默认操作。有一些互用性问题影响滚轮事件,但是编写跨平台的代码依旧可以行。除了Firefox之外的所有浏览器都支持“mousewheel”事件,但Firefox使用“DOMMouseScroll”,而3级DOM事件规范草案建议使用事件名“wheel”替代“mousewheel”。

document.body.onmousewheel = function(event){
  event = event || window.event;
  console.dir(event);
}

Firefox不支持mousewheel

document.body.addEventListener("DOMMouseScroll",function(event){
  console.dir(event);
})

以下滚轮向下滚动是chrome和IE9下面控制台输出

以下是滚轮向下滚动Firefox下面控制台输出

从上面输出得出,可以使用非标准的DOMMouseScroll事件取代mousewheel,使用事件对象的detail属性取代wheelDetal。但是,detail属性值的缩放比率和正负符号不同于wheelDetal,detail值乘以-40和wheelDetal值相等。

在除了FireFox之外的浏览器下,滚动的上下滚动与否是下面这个wheelDelta有关。

根据测试,在我的win7系统下,无论IE7, IE10, Opera12,或者是safari5.1,每次往下滚动event.wheelDelta值都是-120.

对于FireFox浏览器(Opera浏览器也有),判断鼠标滚动方向的属性为event.detail, 向下滚动值为3.

需要注意的是,FireFox浏览器的方向判断的数值的正负与其他浏览器是相反的。FireFox浏览器向下滚动是正值,而其他浏览器是负值。

var isFirefox = (navigator.userAgent.indexOf("Firefox") !== -1);
if(isFirefox){
  element.addEventListener("DOMMouseScroll",wheelHandler,false);
}
element.onmousewheel = wheelHandler;
//element.onwheel = wheelHandler; //DOM3级wheel事件,经过测试IE9还是不支持,但是谷歌和火狐都支持,在谷歌内有wheelDelta在火狐里面有detail
function wheelHandler(event){ event = event || window.event; var delta = event.wheelDelta || detail*-30; }

以上所述就是本文的全部内容了,希望大家能够喜欢。

您可能感兴趣的文章:

  • js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
  • JavaScript事件类型中焦点、鼠标和滚轮事件详解
  • JavaScript焦点事件、鼠标事件和滚轮事件使用详解
  • javascript实现禁止鼠标滚轮事件
  • js实现鼠标滚轮控制图片缩放效果的方法
  • javascript监听鼠标滚轮事件浅析
  • js捕获鼠标滚轮事件代码
  • JS滚轮事件onmousewheel使用介绍
  • 浅谈Javascript鼠标和滚轮事件
  • js 事件对象 鼠标滚轮效果演示说明
  • JavaScript 滚轮事件使用说明
  • js中鼠标滚轮事件详解(firefox多浏览器)
  • javascript 鼠标滚轮事件
  • javascript 兼容鼠标滚轮事件
  • 两种js监听滚轮事件的实现方法

《解析javascript中鼠标滚轮事件.doc》

下载本文的Word格式文档,以方便收藏与打印。