滾輪事件是不同瀏覽器會有一點點區別,一個像Firefox使用DOMMouseScroll ,ff也可以使用addEventListener方法綁定DomMouseScroll事件,其他的瀏覽器滾輪事件使用mousewheel,下面我來給大家具體介紹。
Firefox使用DOMMouseScroll,其他的瀏覽器使用mousewheel。滾動事件觸發時Firefox使用detail屬性捕捉滾輪信息,其他的瀏覽器使用wheelDelta。不知道為何在該問題上其他廠商和微軟的如此一致。Firefox可以使用addEventListener方法綁定DomMouseScroll事件。
elem.addEventListener('DOMMouseScroll', func, false);IE和其他的主流瀏覽器可以使用傳統的事件綁定模型。但不要使用IE專有的attachEvent方法,其他主流瀏覽器並不識別微軟的這個方法。
<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,向下滾動是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游戲的時候我們要用到本功能。
<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>