问题描述
在项目上看到 chrome 的控制台看到如下提示:
Unable to preventDefault inside passive event listener due to target
being treated as passive. See xxxx…
翻译过来就是:不能给passive(被动的)事件监听器preventDefault,因为它被认为是passive。
事实证明 Chrome 和Firefox 都会有此警告。
问题探究
下面我们来了解一下passive和preventDefault
很久以前,addEventListener() 的参数约定是这样的:
addEventListener(type, listener, useCapture)
后来,最后一个参数,也就是控制监听器是在捕获阶段执行还是在冒泡阶段执行的 useCapture 参数,变成了可选参数(传 true 的情况太少了),成了:
addEventListener(type, listener[, useCapture ])
去年年底,DOM 规范做了修订:addEventListener() 的第三个参数可以是个对象值了,也就是说第三个参数现在可以是两种类型的值了:
addEventListener(type, listener[, useCaptur