最近在写自定也页面组件时,有一个需要阻止鼠标滚轮滚动事件的需求,发现在chrome75.0,阻止默认事件的e.preventDefault();
wheelEvent:function(e) {
e = e || window.event;
if(e.preventDefault) {
// Firefox
e.preventDefault();
e.stopPropagation();
} else {
// IE
e.cancelBubble=true;
e.returnValue = false;
}
return false;
}
无法阻止默认事件,并且控制台报如下错误:
原因:由于chrome56版本后
意思大概是在文档级目标(window.document、window.document.body或window)上注册的wheel/mousewheel事件监听器将被视为被动的(如果未指定为被动的),并且在此类监听器内调用preventdefault()将被忽略。
因此,为了正常实现阻止滚轮滚动默认事件,需要修改代码
addEventListener('mousewheel', this.wheelEvent , { passive: false })
在添加事件监听函数添加一个参数{ passive: false },便可以解决chrome56版本后的问题并且不报错