19

以下のスクリプトと混同しています。

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 (3 番目のオプション パラメータ) のキャプチャ パラメータを true に設定すると、すべてのアラートが適切な順序でキャプチャされます。

シャザム イベントがバブルアップしないのはなぜですか?

4

1 に答える 1

37

bubblesプロパティを trueに設定する必要があり、構築中にこれを行う必要があります。

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

または古い方法でinitEvent、2 番目の引数として true を渡してバブルを許可します。

event.initEvent('shazam', true);

MDN ドキュメント

于 2014-04-13T21:12:19.617 に答える