出于某种原因,我在尝试识别Firefox中的鼠标滚轮事件时遇到了麻烦。这适用于IE,Chrome,Safari,Opera,但不适用于FF。我在DOMMouseScroll上附加了一个事件监听器,应该在FF中识别。
$(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
}
});
答案 0 :(得分: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
}
});
答案 1 :(得分:2)
此代码可以挽救我的生命..适用于Chrome,Firefox,Edge,Internet Explorer,Opera ......
window.addEventListener('wheel', function(event){
if(event.deltaY < 0){
// wheeled up
}
else {
// wheeled down
}
});
答案 2 :(得分:0)
这似乎适用于Safari,Chrome和Firefox(我还没有在IE中测试过):
// For Chrome
window.addEventListener('mousewheel', mouseWheelEvent);
// For Firefox
window.addEventListener('DOMMouseScroll', mouseWheelEvent);
function mouseWheelEvent(e) {
var delta = e.wheelDelta ? e.wheelDelta : -e.detail;
}
来自:http://www.h3xed.com/programming/javascript-mouse-scroll-wheel-events-in-firefox-and-chrome