我对以下脚本感到困惑:
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