根据错误中给出的信息,转到所述错误中链接的 URL,没有明显的方法可以用 jQuery 解决这个问题(可能是,但我不使用 jQuery,所以我说你可以't) ... 使用常规 javascript - 您可以在第三个参数中传递 {passive:false} - 修复了这个 Chrome "feature"
document.addEventListener('wheel', fn, {passive: false});
document.addEventListener('mousewheel', fn, {passive: false});
document.addEventListener('DOMMouseScroll', fn, {passive: false});
function fn(event) {
event.preventDefault();
if(delay) return;
delay = true;
setTimeout(function(){delay = false},200)
//some code
}
或者,如果您希望代码更具 jQuery 风格,请创建一个辅助函数
const addListeners = (tgt, list, fn, options) => list.split(' ').forEach(e => tgt.addEventListener(e, fn, options));
然后像这样使用它
addListeners(document, 'wheel mousewheel DOMMouseScroll', function(event) {
event.preventDefault();
if(delay) return;
delay = true;
setTimeout(function(){delay = false},200)
//some code
}, {passive: false}
);
正如 cmets 中提到的,一些 OLD(非常非常老的)浏览器可能不喜欢这种语法 ({passive:true|false})
所以 - 你可能想要功能检测选项 - 来自https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support的代码
var passiveSupported = false;
try {
var options = {
get passive() { // This function will be called when the browser
// attempts to access the passive property.
passiveSupported = true;
}
};
window.addEventListener("test", options, options);
window.removeEventListener("test", options, options);
} catch(err) {
passiveSupported = false;
}
在使用它之前,所以 Internet Explorer 没有一点哭泣