方法AとB
これらは DOM レベル ゼロ イベントとして知られており、やや古い傾向があります。メソッド A は HTML でインラインで宣言しますが (悪い)、メソッド B は同じことを行いますが、JS で集中的に行います。
メソッド A では、属性値は有効な JS の文字列であり、起動時に評価されます (これも悪いことです)。イベントがバインドされる位置により、これは、この文字列で参照されるすべての関数がグローバル (またはグローバルにアクセス可能なメソッド) である必要があることを意味します。メソッド B では、イベントはインラインではなく、JS で一元的にバインドされます。
それらの主な注意点は、時代遅れで単純化されていることを除けば、要素ごとに 1 種類のイベントしかバインドできないことです。このメカニズムで 2 つのクリック イベント ハンドラーを同じイベント ハンドラーにバインドしようとすると、最初のイベント ハンドラーは忘れられます。単に要素の属性を上書きしているだけなので、これは理にかなっています。
方法 C
addEventListener
イベントを添付するための標準です。長い間、IE はこれをサポートしておらず、同等のattachEvent
方法を好んでいました。それらのいくつかの違いは次のとおりです。
attachEvent
イベントのキャプチャを許可しません (param 3 はaddEventListener
これを許可します)
- with
attachEvent
では、イベント オブジェクト (つまり、発生したイベントに関する情報を格納するオブジェクト) は でアクセスされますがwindow.event
、 withaddEventListener
ではコールバックへの唯一の引数として転送されます。
- の
attachEvent
場合、イベント名の前に を付ける必要がありますon
(例: onClick
. addEventListener
単純に必要click
- で
addEventListener
、this
コールバック内のキーワードは、イベントをトリガーした要素を指します。イベント ( ) オブジェクト内のプロパティから要素を抽出して、これattachEvent
を自分で解読する必要があります。window.event
IE9 が登場し、サポートしていますaddEventListener
。