我注意到在使用最新版本的Chrome浏览器时,将鼠标滚轮应用于主体而不是任何其他元素时,不会触发mousewheel事件。 (38.0.2125.104 m)。

使用绝对定位的元素时会发生这种情况。

通过滚动白色区域而不是红色区域,可以在this 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';

09-25 21:57