滚轮事件是不一样浏览器会有一点点区别,一个像Firefox使用DOMMouseScroll ,ff也能够使用addEventListener方法绑定DomMouseScroll事件,其余的浏览器滚轮事件使用mousewheel,下面我来给你们具体介绍。javascript
Firefox使用DOMMouseScroll,其余的浏览器使用mousewheel。滚动事件触发时Firefox使用detail属性捕捉滚轮信息,其余的浏览器使用wheelDelta。不知道为什么在该问题上其余厂商和微软的如此一致。Firefox能够使用addEventListener方法绑定DomMouseScroll事件。php
elem.addEventListener('DOMMouseScroll', func, false);IE和其余的主流浏览器能够使用传统的事件绑定模型。但不要使用IE专有的attachEvent方法,其余主流浏览器并不识别微软的这个方法。html
<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>
测试以后获得以下的结论。java
•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里浮动,不管滚动速度如何浏览器
例1 获取鼠标滚轮值,判断滚动方向测试
JavaScript获取鼠标滚轮值,这里的值只有“1”和“-1”两种状况,请选按着中轮滚动,激活后能够不按,直接滚动。程序根据取值能够判断出滚轮的滚动方向,是向上滚仍是向下滚,在编写JS游戏的时候咱们要用到本功能。spa
<html> <head> <title>JavaScript判断鼠标滚轮滚动方向- www.fengfly.com </title> <script type="text/javascript"> function handle(delta) { var s = delta + ": "; if (delta <0) s += "您在向下滚……"; else s += "您在向上滚……"; document.getElementById('delta').innerHTML = s; }//from www.fengfly.com function wheel(event){ var delta = 0; if (!event) event = window.event; if (event.wheelDelta) { delta = event.wheelDelta/120; if (window.opera) delta = -delta; } else if (event.detail) { delta = -event.detail/3; } if (delta) handle(delta); } if (window.addEventListener) window.addEventListener('DOMMouseScroll', wheel, false); window.onmousewheel = document.onmousewheel = wheel; </script> </head> <body> <div id="delta">滚动中轮试试~请选按着中轮滚动,激活后能够不按,直接滚动。 </div> <p>shared by http://www.111cn.net</p> </body> </html>