2012-06-07 73 views
3

由於某種原因,我在嘗試識別Firefox中的mousewheel事件時遇到了問題。這是在IE,Chrome,Safari,Opera,但不是FF。我在DOMMouseScroll上附加了一個應該在FF中識別的事件監聽器。鼠標滾輪事件檢測目前未在Firefox中工作

Fiddle demo

$(document).unbind('mousewheel DOMMouseScroll').on('mousewheel DOMMouseScroll', function(e) { 
    var evt = event || e || window.event; 
    var delta = evt.detail < 0 || evt.wheelDelta > 0 ? 1 : -1; 

    if (delta < 0) { 
     // scroll down 
    } else { 
     // scroll up 
    } 
}); 

回答

14

您的代碼在控制檯中產生錯誤。該行:

var evt = event || e || window.event; 

不正確;範圍內沒有「事件」變量。你可以直接使用「e」。 jQuery代碼將確保您的處理程序獲取事件參數作爲參數。或者:

$(document).unbind('mousewheel DOMMouseScroll').on('mousewheel DOMMouseScroll', function(evt) { 
    var delta = evt.detail < 0 || evt.wheelDelta > 0 ? 1 : -1; 

    if (delta < 0) { 
     // scroll down 
    } else { 
     // scroll up 
    } 
}); 
+0

啊,夥計。我正在摸索我的頭一陣子。謝謝! –

+0

您是否碰巧知道爲什麼向上滾動不適用於此解決方案? –

+1

不是我的頭頂;我會檢查小提琴。 – Pointy

1

此代碼保存了我的生活..在Chrome,Firefox,Edge,Internet Explorer,Opera ...中工作...

window.addEventListener('wheel', function(event){ 
if(event.deltaY < 0){ 
// wheeled up 
} 
else { 
// wheeled down 
} 
});