unable to preventDefault inside passive event listener due to target being treated as passive. 翻译就是“由于目标被视为被动,因此无法阻止被动事件侦听器中的Default。”
这个是由于在新版本的chrome中addeventlistener有一个参数是一个指定有关 listener 属性的可选参数对象,可用的选项如下:
- capture: Boolean,表示 listener 会在该类型的事件捕获阶段传播到该 EventTarget 时触发。
- once: Boolean,表示 listener 在添加之后最多只调用一次。如果是 true, listener
会在其被调用之后自动移除。 - passive: Boolean,设置为true时,表示 listener 永远不会调用 preventDefault()。如果
listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告。
解决方法:
注册处理函数时,用如下方式,明确声明为不是被动的
window.addEventListener(‘touchmove’, func, { passive: false })