以前にもこの小さな問題に遭遇しましたが、要約していませんでした
正確な結論を得るために、今再度遭遇しました:
例: Event オブジェクトは複数の実行関数の間にあります。
例:
dom.addEvent('click', fna);
dom.addEvent('click',fnb);
1: Event オブジェクトに追加された属性fna は、次に実行される fnb 関数内の Event オブジェクトにアクセスできますか?
2: fna/fnb 関数実行時の Event オブジェクトは、Eventfna====Eventfnb と一致しますか? >標準文書が長すぎます
ここの説明はどこにありますか?怠け者ですね...
Jquery の場合、同じイベントに対して、複数の実行関数間の Event オブジェクトは一致します。 Jquery ライブ バインディング イベントの実装では、繰り返し実行される可能性のある関数 liveHandler について、Event オブジェクトに追加で与えられた liveFired 属性に依存して、初回実行後の liveHandler の開始時に関数が終了します。
コードをコピーします
コードは次のとおりです。 if (event.liveFired === this | | ...) {
return;
}
///....
テスト:
コードをコピー
alert(a );
};
prevIeEvent=window.event;
関数 b(e,event); e.abc(); //fn
alert(e === prevEvent); //true
if(event=window.event){
alert(event===e); false
alert(event== =prevIeEvent);//false
alert(event===prevEvent);//false
}
}
var t = document.getElementById(" p");
if ( t.addEventListener) {
t.addEventListener('click', a, false);
t.addEventListener('click', b, false)
} else {
t.attachEvent(' onclick', b);
t.attachEvent('onclick', a)
}
ネイティブ バインディング イベント メソッドの場合 [addEventListener, AttachEvent]、複数の実行関数の場合 Event オブジェクト (パラメーターを介して渡されるイベント) は一致します。IE では、window.event を通じて取得される Event オブジェクトは一致しません。これは、パラメーターを介して渡されるイベントと同等ではありません。
バブリングイベントの場合:
コードをコピー
コードは次のとおりです:
ネイティブ バインディング イベント メソッド [addEventListener,attachEvent] を使用します:
コードをコピー
コードは次のとおりです:
function b(e,event) {
alert(e.abc); //fn
alert(e === prevEvent); =window .event){
alert(event===e); //false
alert(event===prevIeEvent);//false
alert(event===prevEvent);// false
}
}
var t = document.getElementById("p");
if (t.addEventListener) {
t.addEventListener('click', a, false);
document.body.addEventListener('click', b, false);
} else {
t.attachEvent('onclick', a); , b );
}
その結果、attachEvent がイベントにバインドされている場合、IE のバブリング イベント間の関数内の Event オブジェクトが矛盾します。 FFなどはaddEventListenerと合同なオブジェクトです。
実際、非 IE では、イベント オブジェクト Propagation 間の処理関数、または同じ DOM ノードによってトリガーされる複数の関数間の Event オブジェクト間の処理関数は一致します。バインディング フォーム [addEventListener/DOM0] とは何の関係もありません。
IE では、同じ DOM ノードによってトリガーされる複数の関数間のパラメーターを介して渡される Event オブジェクト (attachEvent) のみが一致します。