以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - 前端面试问题
125. 请说明EventTarget.addEventListener() 的第三个参数
当第三个参数为Boolean值时,它表示事件是否在捕获或冒泡阶段处理。如果为true,则在捕获阶段处理事件;如果为false(默认值),则在冒泡阶段处理事件。
当第三个参数为Object时,它表示一个选项对象,可以设置以下属性:
- capture:和Boolean值的含义一样,表示是否在捕获阶段处理事件。
- once:表示事件是否只处理一次。如果为true,则事件处理完成后自动移除该监听器,之后不会再触发事件。
- passive:表示是否不会调用preventDefault()方法。当该属性为true时,在事件处理函数中调用preventDefault()方法也不会阻止默认行为。
示例:
// 在捕获阶段处理click事件element.addEventListener('click', eventHandler, true);// 只处理一次click事件element.addEventListener('click', eventHandler, { once: true });// 在事件处理函数中调用preventDefault()方法不会阻止默认行为element.addEventListener('touchstart', function(event) { event.preventDefault();}, { passive: true });
需要注意的是,这些选项不是所有浏览器都支持,可以通过判断浏览器是否支持相应选项来决定是否使用。