解析javascript中滑鼠滾輪事件,javascript滑鼠滾輪
所有的現代瀏覽器都支援滑鼠滾輪,並且在使用者滾動滾輪時觸發時間。瀏覽器通常使用滑鼠滾輪滾動或縮放文檔,但可以通過取消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還是不支援,但是Google和Firefox都支援,在Google內有wheelDelta在Firefox裡面有detailfunction wheelHandler(event){ event = event || window.event; var delta = event.wheelDelta || detail*-30; }
以上所述就是本文的全部內容了,希望大家能夠喜歡。