我注意到 mousewheel 事件不会在使用最新版本的 Chrome 时在 body 上而不是在任何其他元素上使用鼠标滚轮时触发。 (38.0.2125.104 米)。
当使用绝对定位元素时会发生这种情况。
您可以在 this fiddle 中复制它通过在白色区域而不是红色区域滚动。
知道为什么会这样吗?有什么解决办法吗?
fiddle 使用的代码:
addMouseWheelHandler();
function addMouseWheelHandler() {
if (document.addEventListener) {
document.addEventListener("mousewheel", MouseWheelHandler, false); //IE9, Chrome, Safari, Oper
document.addEventListener("wheel", MouseWheelHandler, false); //Firefox
} else {
document.attachEvent("onmousewheel", MouseWheelHandler); //IE 6/7/8
}
}
function MouseWheelHandler(e) {
e = window.event || e;
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.deltaY || -e.detail)));
console.log("mouse wheel!" + delta);
return false;
}
最佳答案
这似乎是一个错误。事件监听器附加到文档,因此它应该应用于整个文档,而不管 body 元素的高度如何。
作为解决方法,您可以添加以下代码:
document.body.style.height= document.body.scrollHeight+'px';
关于javascript - 鼠标滚轮事件不会在 Chrome 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26470556/