首页 > 文章列表 > 如何调整 Window 对象 addEventListener 的事件监听器执行顺序? 或者 如何控制 window.addEventListener 事件监听器的执行顺序?

如何调整 Window 对象 addEventListener 的事件监听器执行顺序? 或者 如何控制 window.addEventListener 事件监听器的执行顺序?

230 2025-03-03

如何调整 Window 对象 addEventListener 的事件监听器执行顺序?
或者
如何控制 window.addEventListener 事件监听器的执行顺序?

掌控window.addEventListener事件监听器执行顺序的技巧

直接改变已注册事件监听器的执行顺序是不可能的。然而,我们可以运用以下策略来间接控制事件处理的流程:

1. 利用事件捕获阶段: 通过设置capture选项为true,可以将事件监听器注册到捕获阶段。这意味着该监听器会在冒泡阶段之前执行。

代码示例:

window.addEventListener("resize", () => console.log('默认优先级'));
window.addEventListener("resize", () => console.log('捕获阶段优先级'), true);

2. 巧用passive选项: passive选项控制监听器是否在浏览器阻止默认行为前执行。将passive设置为true,监听器会在浏览器处理默认行为之后执行,从而降低其优先级。

代码示例:

window.addEventListener("resize", () => console.log('默认优先级'));
window.addEventListener("resize", () => console.log('passive最低优先级'), { passive: true });
window.addEventListener("resize", () => console.log('捕获阶段优先级'), true);

通过结合使用捕获阶段和passive选项,您可以有效地管理window.addEventListener事件监听器的执行顺序,从而实现更精细的事件处理控制。 需要注意的是,改变监听器注册顺序本身并不会影响其执行顺序。

来源:1740092480