js中addEventListener事件监听器参数详解入门知识
我们都知道addEventListener() 的参数约定是这样的:
addEventListener(type, listener[, useCapture ])
useCapture是可选参数,默认值为false,它代表:控制监听器是在捕获阶段执行还是在冒泡阶段执行,通常我们都没传递第三个参数(传 true 的情况太少了)。目前DOM 规范做了修订:addEventListener() 的第三个参数可以是个对象值了,也就是说第三个参数现在可以是两种类型的值了:
addEventListener(type, listener[, useCapture ])
addEventListener(type, listener[, options ])
这篇文章主要讲解第三参数为对象值的情况,目前规范中 options 对象可用的属性有三个:
document.addEventListener(type, fn, {
capture: false,
passive: false,
once: false
})
passive就是告诉浏览器我可不可以用stopPropagation【该方法将停止事件的传播】,在执行fn之前就告诉浏览器,让浏览器性能更好。比如有时候你滑动滚轮的时候,你阻止默认行为,那么鼠标就不应该动了呗,但是它也动了。所以说浏览器刚开始是不知道你是否要取消默认行为的执行代码之后就知道了。true 是不可以使用stopPropagation
capture 就是 冒泡阶段或者事件捕获阶段执行事件 true 事件捕获阶段
once 是执行一次fn就清除fn,传true为清除。如果你多次执行,那么就会给documen添加多个事件,特别不好,容易造成事件混乱等一些问题,所以这时候就once就很好了。目前好像就谷歌支持吧