gpt4 book ai didi

javascript - 为什么用 dispatchEvent 触发定义的事件不遵守事件的冒泡行为?

转载 作者:可可西里 更新时间:2023-11-01 01:16:25 24 4
gpt4 key购买 nike

我对下面的脚本感到困惑:

var event = new Event('shazam');

document.body.addEventListener('shazam',function(){
alert('body');
});

document.addEventListener('shazam',function(){
alert('document');
});

window.addEventListener('shazam',function(){
alert('window');
});

document.body.dispatchEvent(event);

当我在浏览器上运行此脚本时,我只会收到 alert('body'); 事件。但是,如果我将 addEventListener 的捕获参数(第三个可选参数)设置为 true,则所有警报都会按应有的顺序捕获。

为什么 shazam 事件 没有冒出来?

最佳答案

您需要将bubbles 属性设置为true,并且您必须在构造期间执行此操作:

var event = new Event('shazam', { bubbles: true });

或使用 initEvent 的旧方法,将 true 作为第二个参数传递以允许冒泡:

event.initEvent('shazam', true);

MDN Doc

关于javascript - 为什么用 dispatchEvent 触发定义的事件不遵守事件的冒泡行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23048322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com