参数
- eventType
- handler
- capture || options:{}
- options:(默认下边所有参数都是 false)
- capture 捕获
- once: true 的时候,listener会在被调用一次后自动移除
- passive: Boolean,设置为 true 时,表示 listener 永远不会调用 preventDefault()。如果 listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告。查看 使用 passive 改善的滚屏性能 了解更多
- 简而言之,
passive: true
阻止了 preventDefault()
的调用
once
监听器函数被调用一次后会被自动移除,下次调用不会触发该函数了
注意:
- 事件是不需要绑定的,浏览器固然存在的
- 冒泡也是默认的行为
- 所以 oMiddle和oOuter 上的绑定函数依然会被触发
⭐️ passive
如果设置为 true,会导致当前事件处理函数永远不会调用内部设置的 event.preventDefault()
,并且会在设置了 event.preventDefault()
的时候报警告。
使用 passive 改善的滚屏性能
前置知识
- window、document、document.body 的 touchstart、touchmove 事件的 passive 默认设置为 true
- touchstart 的默认行为是 scroll 滚动
某些浏览器(特别是Chrome和Firefox)已将文档级节点 Window,Document 和Document.body 的 touchstart (en-US) 和 touchmove (en-US) 事件的 passive 选项的默认值更改为 true。这可以防止调用事件监听器,因此在用户滚动时无法阻止页面呈现。