0

javascript関数がDOMイベントによって呼び出されると、関数内でDOMイベントを表すイベント変数にアクセスできますか?舞台裏ではどのように機能しますか?関数はイベント引数を取得せず、argusmentsオブジェクトを使用しないためです。

4

1 に答える 1

0

DOMイベントの簡単な要約:

Eventlistenerをバインドする正しい方法は次のとおりです。

var elem = document.querySelector("div");

elem.addEventListener("event-type",function(e){ /*e is the event object*/ });

addEventListener()event-typeDOM-Elementでイベントをリッスンしますelem

addEventListener()常にイベントオブジェクトを最初のパラメータとして関数に渡します。eこのパラメーターには、関数ヘッド(一般に名前が付けられている)で定義するか、を介してアクセスできますarguments[0]thisイベントが発生したDom-Elementを指します。

IE(バージョン8まで)には、イベントハンドラーをバインドするための独自の方法があります。

elem.attachEvent("event-type",function(){})

これにはいくつかの欠点thisがあります。DOM要素ではなくグローバルオブジェクトを参照し、eventオブジェクトがパラメーターとして渡されないことです。

ただし、Microsoftwindow.eventは、ドキュメントで発生した最後のイベントを常に保持するものを導入しました。したがって、次のように関数で使用できます。

function(){
   var e = window.event;
}

これwindow.eventはいくつかのブラウザで利用できますが、これに依存したり使用したりしないでください(ほとんどのグローバル変数に推奨されます)。

于 2013-02-08T12:52:57.563 に答える