javascript - 鼠标滚轮事件不会在 Chrome 中触发

标签 javascript jquery google-chrome mousewheel

我注意到 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/

相关文章:

jquery - 在 jQuery 中设置 "Accept" header 以检索 iframe 中的数据

jquery - 如何添加类(class)并在完成后获得结果

javascript - 如何防止系统强制暗模式?

javascript - Angular ng-show 不根据函数返回值显示/隐藏

javascript - 需要 firebaseUI - 未定义窗口

javascript - 获取 ISO 字符串格式的 2 个日期相减后的天数

css - 自定义字体 : Extra height with Chrome

javascript - 检查变量是否是有效的节点元素

javascript - 隐藏元素背后的逻辑

javascript - 弹出窗口拦截器 API - 如何检查用户是否启用了它