イベントフローはページからイベントを受け取る順序を指し、イベントハンドラーはイベントへの応答を処理します。次に、JavaScriptのイベントフローとイベントハンドラーについて詳しく説明します。
イベントフロー: 2つのタイプがあります。 , IE は、イベント バブリング ストリームです。イベントは最初に最も具体的な要素から受信され、より具体的なノードに伝播されます (要素 -> ドキュメント)。その逆は、Netscape のイベント キャプチャ ストリームです。
DOM2 レベルのイベントでは、イベント フローにイベント キャプチャ ステージ、ターゲット ステージ、イベント バブリング ステージの 3 つのステージが含まれることが規定されています。
ほとんどの場合、イベント ハンドラーはイベント フローのバブリング フェーズに追加されます。 EventUtil の例:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
以下で詳しく見てみましょう:
DOM レベル 0 イベント ハンドラー Javascript を通じてイベント ハンドラーを指定する従来の方法は、関数をイベント ハンドラー属性に割り当てることです。
各要素には独自のイベント ハンドラー属性があり、通常はすべて小文字です (onclick など)。このプロパティの値を関数に設定すると、イベント ハンドラーを指定できます。
1 2 3 4 5 6 7 |
|
長所: 1. シンプル 2. クロスブラウザーの利点
短所: コードが実行される前にイベント ハンドラーが指定されていないため、これらのコードはページ内のボタンの後ろに配置されており、実行されない可能性があります。その結果、ユーザーエクスペリエンスが低下します。
DOM2 レベルのイベント ハンドラー は、イベント ハンドラーの指定と削除の操作を処理するための 2 つのメソッド、addEventListener() とremoveEventListener() を定義します。 3 つのパラメータ、1. 処理されるイベントの名前。 2. イベント ハンドラーとしての関数 3. ブール値。最後のブール値は true (イベント ハンドラーがキャプチャ フェーズ中に呼び出されることを意味します)、false (イベント ハンドラーがバブリング フェーズ中に呼び出されることを意味します) です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
これら 2 つのイベント ハンドラーは、追加された順序で起動されます。ほとんどの場合、さまざまなバージョンのブラウザーとの互換性を最大限に高めるために、イベント ハンドラーはイベント フローのバブリング フェーズに追加されます。
利点: 1つの要素に複数のイベントハンドラーを追加できます
欠点: IE8以下のブラウザはDOM2レベルのイベントハンドラーをサポートしていません。 (IE8 を含む)
IE イベント ハンドラー は、上記と同様の 2 つのメソッド、attachEvent()、detachEvent() を定義します。どちらのメソッドも、イベント ハンドラー名とイベント ハンドラー関数という同じ 2 つのパラメーターを受け取ります。 IE8 以前のブラウザはイベント バブリングのみをサポートしているため、detachEvent() によって追加されたイベント ハンドラーはバブリング フェーズに追加されます。
1 2 3 4 5 6 7 |
|
ボタンをクリックすると、これら 2 つのイベント ハンドラーの起動順序は上記とはまったく逆になります。追加された順序でイベント ハンドラーをトリガーするのではなく、その逆です。
利点: 1つの要素に複数のイベントハンドラーを追加できます
欠点: IEのみをサポートします。
クロスブラウザイベントハンドラー
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
上記は、皆さんのためにまとめたもので、将来皆さんのお役に立てれば幸いです。
関連記事:
JavaScriptの基本的なヒント(画像とテキストのチュートリアル、詳細な回答)
javascriptEL式の値のトラバースリストコレクション
以上がJavaScript のイベント フローとイベント ハンドラーの詳細な説明 (グラフィック チュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。