JSイベントフローメカニズム
1914 ワード
イベントフローとは
1.ノードのキャプチャ2.イベントの処理3.イベントのバブル
現在、イベントバブルフロー、イベントキャプチャフローに分けられている.
違い:1.イベントバブルフローは、イベントバブルフェーズでイベントに応答する2.イベントキャプチャフローは、キャプチャノードプロセスでイベントに応答する.3.ほとんどのブラウザでは、イベントの使用に応答するためにイベントソースのバブルフローがデフォルトで使用されます.addEventListenerの最後のパラメータは、trueではイベントキャプチャモード、falseではイベントバブルモードの使用を表します.
イベントバブルフローは、対応する要素にどのようにバインドされますか?どのように応答しますか?
1.ルート要素htmlからid=「getCopy」の要素が見つかるまで1級1級内を探す2.この要素のためにclickイベントを処理する3.イベントバブル法に従ってこの要素からルートノードまで1級1級外へイベントに応答する
イベントキャプチャストリームは、対応する要素にどのようにバインドされますか?どのように応答しますか?
1.ルート要素htmlから内を探し、id=「getCopy」の要素が見つかるまで1級1級内応答イベントを探します.2.この要素のためにclickイベントを処理します.3.この要素から1級1級外のイベントに泡が立ち、ルートノードまで
addEventListenerは同じ要素で同じイベントとメソッドをバインドし、後者は前の要素を上書きします.
addEventListenerは同じ要素で同じイベントと異なるメソッドをバインドし、後の要素は前の要素を上書きしません.
イベントの発泡を阻止するstopPropagation
1.ノードのキャプチャ2.イベントの処理3.イベントのバブル
現在、イベントバブルフロー、イベントキャプチャフローに分けられている.
違い:1.イベントバブルフローは、イベントバブルフェーズでイベントに応答する2.イベントキャプチャフローは、キャプチャノードプロセスでイベントに応答する.3.ほとんどのブラウザでは、イベントの使用に応答するためにイベントソースのバブルフローがデフォルトで使用されます.addEventListenerの最後のパラメータは、trueではイベントキャプチャモード、falseではイベントバブルモードの使用を表します.
イベントバブルフローは、対応する要素にどのようにバインドされますか?どのように応答しますか?
1.ルート要素htmlからid=「getCopy」の要素が見つかるまで1級1級内を探す2.この要素のためにclickイベントを処理する3.イベントバブル法に従ってこの要素からルートノードまで1級1級外へイベントに応答する
var btn = document.getElementById('getCopy');
btn.addEventListener('click', function(){
console.log('btn click');
}, false);
イベントキャプチャストリームは、対応する要素にどのようにバインドされますか?どのように応答しますか?
1.ルート要素htmlから内を探し、id=「getCopy」の要素が見つかるまで1級1級内応答イベントを探します.2.この要素のためにclickイベントを処理します.3.この要素から1級1級外のイベントに泡が立ち、ルートノードまで
var btn = document.getElementById('getCopy');
btn.addEventListener('click', function(){
console.log('btn click');
}, true);
addEventListenerは同じ要素で同じイベントとメソッドをバインドし、後者は前の要素を上書きします.
var btn = document.getElementById('getCopy');
var btnFun = function(){
console.log('btn click');
}
btn.addEventListener('click', btnFun, false);//
btn.addEventListener('click', btnFun, false);// btn click
addEventListenerは同じ要素で同じイベントと異なるメソッドをバインドし、後の要素は前の要素を上書きしません.
var btn = document.getElementById('getCopy');
btn.addEventListener('click', function(){
console.log('btn click1');// btn click1
}, false);
btn.addEventListener('click', function(){
console.log('btn click2');// btn click2
}, false);
イベントの発泡を阻止するstopPropagation
btn.addEventListener('click', function(event){
console.log('btn click2');// btn click2
event.stopPropagation();
}, false);