各瀏覽器中的鼠標滾輪事件處理

滾輪事件是不一樣瀏覽器會有一點點區別,一個像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>
相關文章
相關標籤/搜索