gpt4 book ai didi

jquery - 我无法阻止 Chrome 中的鼠标滚轮事件

转载 作者:行者123 更新时间:2023-12-01 08:35:51 24 4
gpt4 key购买 nike

我想阻止用户通过鼠标滚轮滚动。在 Firefox 中它可以工作,但在 Chrome 中不行。 Chrome 必须更改哪些内容?

$(window).on('wheel', function(e) {    
e.preventDefault(); // Prevent user scroll during page jump
})

jsFiddle

最佳答案

您需要将事件处理程序设置为非被动才能在 Chrome 上运行。据我所知,这在 jQuery 中是不可能的。但您可以使用常规的 addEventListener 来实现此目的。

document.addEventListener('wheel', function(e) {
e.preventDefault(); // Prevent user scroll during page jump
}, {
passive: false
});
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}

#banner-message {
background: #fff;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
height: 2000px;
}
<div id="banner-message">
<p>Mousewheel should be prevented</p>
</div>

正如 Shikkediel 所指出的评论中:如果您想支持较旧(版本)的浏览器(例如 Internet Explorer),建议首先检查浏览器是否支持 passive 选项。旧版浏览器将 bool 类型作为 addEventListener 的第三个参数。因此,他们可能会抛出错误,或者他们可以将第三个参数设置为 true(默认为 false),这可能会导致一些不良行为。您可以使用下面的代码来实现此目的。

var passiveSupported = supportsPassive();

document.addEventListener('wheel', function(e) {
e.preventDefault(); // Prevent user scroll during page jump
}, passiveSupported ? {
passive: false
} : false);

function supportsPassive() {
var passiveSupported = false;

try {
var options = {
get passive() {
passiveSupported = true;
}
};

window.addEventListener("test", options, options);
window.removeEventListener("test", options, options);
} catch (err) {
passiveSupported = false;
}

return passiveSupported;
}
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}

#banner-message {
background: #fff;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
height: 2000px;
}
<div id="banner-message">
<p>Mousewheel should be prevented</p>
</div>

关于jquery - 我无法阻止 Chrome 中的鼠标滚轮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55934390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com