Shn*_*hnd 17 javascript events event-bubbling dispatchevent
我对下面的脚本感到困惑:
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);
Run Code Online (Sandbox Code Playgroud)
当我在浏览器上运行此脚本时,我只是收到警报('body'); 事件.但是如果我将addEventListener(第三个可选参数)的capture参数设置为true,则按顺序捕获所有警报.
为什么shazam事件不会冒泡?
Pat*_*ans 31
您需要将该bubbles属性设置为true,并且必须在构造期间执行此操作:
var event = new Event('shazam', { bubbles: true });
Run Code Online (Sandbox Code Playgroud)
或旧的方式initEvent,传递真作为允许泡沫的第二个参数:
event.initEvent('shazam', true);
Run Code Online (Sandbox Code Playgroud)