javascriptにおけるイベントバインディング互換性の問題を簡単に分析する.
1417 ワード
プロジェクトではしばしばこのようなコードが発生します.
function changeStyle(e){
var e = e || window.event;
var target = e.srcElement || e.target;
target.style.display = "none";
}
document.getElemntById("xxx").onclick = changeStyle;
ここのeは何を表していますか?このように見て、eはパラメータです.関数のようなイベント関数を呼び出すと、一般的にはnullです.この時はie処理なら、e=window.eventです.window.eventは何ですか?イベントはwindowというグローバルオブジェクトの属性で、最後に実行する動作を表します.w 3 c標準で処理すると、w 3 cは空になったらトリガされるイベントが最初のパラメータとして入ってくると規定しています.つまり、argment[0]です.このように書いてもいいです.function changeStyle(e){
var e = argument[0] || window.event;
var target = e.srcElement || e.target;
target.style.display = "none";
}
document.getElemntById("xxx").onclick = changeStyle;
このようにeとは、発生したばかりのイベント動作を取ってから、targetを見て、e.srcelementはイベント動作の対象を表し、w 3 c標準ではe.targetはイベント動作の対象を表します.そして、targetはもう動作の対象を表しました.そしてどうやって操作すればいいですか?