JavaScript中的鼠标滚轮事件
addEventListener
方法绑定DomMouseScroll事件。
elem.addEventListener('DOMMouseScroll', func, false);IE和其他的主流浏览器可以使用传统的事件绑定模型。但不要使用IE专有的
attachEvent
方法,其他主流浏览器并不识别微软的这个方法。下面先测试一下。
120
<script type="text/javascript"> // <![CDATA[ var mouseWheel = document.getElementById('mouseWheel'); if (mouseWheel.addEventListener) { mouseWheel.addEventListener('DOMMouseScroll', function(event) { event.target.innerHTML = event.detail; event.stopPropagation(); event.preventDefault(); }, false); } mouseWheel.onmousewheel = function(event) { event = event || window.event; mouseWheel.innerHTML = event.wheelDelta; event.returnValue = false; } // ]]> </script>测试之后得到如下的结论。
Firefox 鼠标滚轮向上滚动是-3,向下滚动是3IE 鼠标滚轮向上滚动是120,向下滚动是-120 Safari 鼠标滚轮向上滚动是360,向下滚动是-360 Opera 鼠标滚轮向上滚动是120,向下滚动是-120 Chrome 鼠标滚轮向上滚动是120,向下滚动是-120</pre>
有人在Safari下做了一些测试:”只是滚动一圈的话,值为+-0.1,如果滚动地稍微快点的话(多滚动几圈),这个值也会变大。 这是因为Mac OS下有鼠标滚轮加速功能。滚动一次,浏览器滚动1像素,滚动3次,浏览器却滚动30像素”。同时他也对Camino(基于Gecko的内核引擎)进行研究:“与Safari相似(+- 0.3 to +-Infinity),虽然使用了与firefox相同的内核引擎,但结果这个delta值却只在+-2.666666里浮动,无论滚动速度如何。”
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 王恒's Blog!
评论