ホームページ ウェブフロントエンド jsチュートリアル イベント伝播メカニズムを理解する: キャプチャとバブル順序分析

イベント伝播メカニズムを理解する: キャプチャとバブル順序分析

Feb 19, 2024 pm 07:11 PM
イベントバブリング つまりブラウザ イベントキャプチャ バブル 一連の出来事

イベント伝播メカニズムを理解する: キャプチャとバブル順序分析

イベントは最初にキャプチャされますか、それとも最初にバブルされますか?イベント トリガー シーケンスの謎を解く

イベント処理は Web 開発の非常に重要な部分であり、イベント トリガー シーケンスは謎の 1 つです。 HTML では、通常、イベントは「キャプチャ」または「バブリング」によって伝播されます。どちらを先にキャプチャすべきか、それとも最初にバブルすべきでしょうか?これは非常に紛らわしい質問です。

この質問に答える前に、まずイベントの「キャプチャ」メカニズムと「バブル」メカニズムを理解しましょう。イベント キャプチャは、イベントを最上位の要素からターゲット ノードにレイヤーごとに配信することを指しますが、イベント バブリングは、イベントをターゲット ノードからレイヤーごとに最上位の要素に配信することを指します。どちらの伝播方法もイベント処理において重要な役割を果たします。

初期のブラウザでは、イベント伝播シーケンスは Netscape によって先駆的に開発されました。彼らは、イベントの伝播順序は、最も外側の要素から内側の要素に、次に内側の要素から外側の要素に進むべきだと考えています。したがって、Netscape ブラウザは、イベント伝播シーケンスをイベント キャプチャおよびイベント バブリングとして定義します。

しかし、インターネットの普及に伴い、Microsoft は独自の IE ブラウザを立ち上げ、Netscape とは異なるイベント伝播シーケンスを採用しました。彼らは、イベントの伝播は最も内側の要素から外側の要素に始まり、次に外側の要素から内側の要素に伝播する必要があると考えています。

この相互非互換性の問題を解決するために、W3C は統一標準を開発しました。 W3C 標準によれば、イベントの伝播の順序は、最初にキャプチャし、次にバブリングする必要があります。これは、現在すべての最新ブラウザが従う伝播順序です。

具体的には、要素でイベントが発生すると、ブラウザはまずイベント キャプチャ フェーズを実行します。イベント キャプチャ フェーズでは、ブラウザはイベントを最も外側の要素からターゲット要素に伝播します。イベントがターゲット要素に伝播すると、ターゲットフェーズに入ります。ターゲット フェーズでは、ブラウザはターゲット要素にバインドされたイベント ハンドラーを実行します。最後に、イベントはバブリング段階に入り、ブラウザはイベントをターゲット要素から外側の要素に、最も外側の要素に到達するまで伝播します。

イベントの伝播シーケンスをより深く理解するために、簡単な例でそれを示します。 3 つのネストされた要素を含む HTML ドキュメントがあるとします。

<div id="outer">
  <div id="inner">
    <button id="button">Click me</button>
  </div>
</div>
ログイン後にコピー

イベント処理関数を各要素にバインドします。この関数は、それぞれイベント キャプチャ フェーズとバブリング フェーズで実行されます。これは、次のコードで実現できます:

var outer = document.getElementById('outer');
var inner = document.getElementById('inner');
var button = document.getElementById('button');

outer.addEventListener('click', function() {
  console.log('Outer capture');
}, true);

inner.addEventListener('click', function() {
  console.log('Inner capture');
}, true);

button.addEventListener('click', function() {
  console.log('Button capture');
}, true);

outer.addEventListener('click', function() {
  console.log('Outer bubble');
}, false);

inner.addEventListener('click', function() {
  console.log('Inner bubble');
}, false);

button.addEventListener('click', function() {
  console.log('Button bubble');
}, false);
ログイン後にコピー

ボタンをクリックすると、コンソール出力の結果は次のようになります:

Outer capture
Inner capture
Button capture
Button bubble
Inner bubble
Outer bubble
ログイン後にコピー

結果からイベントの伝播の順序が明確にわかります。 。まず、ブラウザはキャプチャフェーズのイベント処理関数(アウターキャプチャ、インナーキャプチャ、ボタンキャプチャ)を外側から内側へ順番に実行します。次にブラウザはバブリングフェーズのイベント処理関数(ボタンバブル、インナーバブル、アウターバブル)を内側から外側に向かって順番に実行します。

この例を通じて、最新のブラウザーでは、イベントの伝播順序は最初にキャプチャ、次にバブルであると結論付けることができます。これは、W3C によって設定された標準によって義務付けられています。

実際の開発プロセスでは、通常、イベント バブリング メカニズムを使用してイベントを処理します。イベント バブリング メカニズムによりイベント委任を簡単に実装できるため、イベント処理関数の数が削減され、パフォーマンスが向上します。イベント キャプチャ メカニズムは比較的まれに使用され、いくつかの特殊な状況でのみ使用されます。

要約すると、イベント伝播の順序は、最初にキャプチャし、次にバブルすることです。イベントの伝播メカニズムを理解することで、イベントをより適切に処理し、Web ページのユーザー エクスペリエンスを向上させることができます。

以上がイベント伝播メカニズムを理解する: キャプチャとバブル順序分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Web ページ上の画像を読み込めない場合はどうすればよいですか? 6つのソリューション Web ページ上の画像を読み込めない場合はどうすればよいですか? 6つのソリューション Mar 15, 2024 am 10:30 AM

一部のネチズンは、ブラウザの Web ページを開いたときに、Web ページ上の画像が長時間読み込めないことに気づきました。何が起こったのでしょうか?ネットワークは正常であることを確認しましたが、どこに問題があるのでしょうか?以下のエディタでは、Web ページの画像が読み込めない問題に対する 6 つの解決策を紹介します。 Web ページの画像を読み込めない: 1. インターネット速度の問題 Web ページに画像が表示されません。これは、コンピュータのインターネット速度が比較的遅く、コンピュータ上で開いているソフトウェアが多いためと考えられます。また、アクセスする画像が比較的大きいため、読み込みタイムアウトが原因である可能性があります。その結果、画像が表示されません。ネットワーク速度をより多く消費するソフトウェアをオフにすることができます。タスク マネージャーに移動して確認できます。 2. 訪問者が多すぎる Web ページに写真が表示されない場合は、訪問した Web ページが同時に訪問されたことが原因である可能性があります。

360 スピードのブラウザ互換モードを設定する方法 360 スピードのブラウザ互換モードを設定する方法 Feb 24, 2024 am 10:49 AM

360 Speed Browser は、ユーザーがインターネットに迅速かつ安全にアクセスできるようにする人気のブラウザ アプリケーションです。ページ表示の異常や機能が正常に利用できない問題を解決するために、360 Extreme Browser では快適にウェブを閲覧できる互換モード機能を提供しています。では、360 スピードのブラウザ互換モードを設定するにはどうすればよいでしょうか?心配しないでください。エディターが 360 Extremely Fast Browser の互換モードを設定する方法に関するチュートリアルを提供します。お役に立てれば幸いです。 360 Speed Browser の互換モードの設定方法 1. 当サイトからダウンロードした 360 Speed Browser を開き、起動後、右上隅の 3 本の横棒アイコンをクリックします。 2. ポップアップオプションの[設定]をクリックします。 3. 開いた 360 Speed Browser 設定ウィンドウをクリックします。

Windows 11 で信頼済みサイトを設定する方法_Windows 11 の IE で信頼済みサイトを追加する方法 Windows 11 で信頼済みサイトを設定する方法_Windows 11 の IE で信頼済みサイトを追加する方法 May 08, 2024 pm 01:11 PM

1. まず、システムで IE ブラウザを開き、右上隅にある歯車の形のボタンを見つけてクリックします。 2. クリックするとドロップダウンメニューが表示されるので、[互換表示設定]をクリックします。 4. [この Web サイトを追加する] に追加する URL を入力し、右側の [追加] をクリックします。

jsのクリックイベントが繰り返し実行できない理由 jsのクリックイベントが繰り返し実行できない理由 May 07, 2024 pm 06:36 PM

JavaScript のクリック イベントは、イベント バブリング メカニズムのため、繰り返し実行できません。この問題を解決するには、次の措置を講じることができます。 イベント キャプチャを使用する: イベントがバブルアップする前に起動するイベント リスナーを指定します。イベントの引き継ぎ: イベントのバブリングを停止するには、event.stopPropagation() を使用します。タイマーを使用します。しばらくしてからイベント リスナーを再度トリガーします。

イベントのバブリングが 2 回トリガーされるのはなぜですか? イベントのバブリングが 2 回トリガーされるのはなぜですか? Feb 22, 2024 am 09:06 AM

イベントのバブリングが 2 回トリガーされるのはなぜですか?イベント バブリング (イベント バブリング) とは、DOM において、要素がイベント (クリック イベントなど) をトリガーすると、イベントがその要素から親要素にバブルアップし、最後に最上位のドキュメント オブジェクトにバブルアップすることを意味します。イベント バブリングは DOM イベント モデルの一部であり、これにより開発者はイベント リスナーを親要素にバインドできるため、子要素がイベントをトリガーすると、バブリング メカニズムを通じてイベントをキャプチャして処理できます。ただし、開発者は、バブルして 2 回トリガーされるイベントに遭遇することがあります。

エッジブラウザで広告をオフにする方法は?エッジブラウザで広告をオフにする方法の紹介 エッジブラウザで広告をオフにする方法は?エッジブラウザで広告をオフにする方法の紹介 Mar 14, 2024 pm 03:49 PM

Edge ブラウザは、現在 Windows システムにインストールされているブラウザ ツールです。多くのユーザーは、エッジ ブラウザを使用すると、多数の広告ポップアップが表示されることに気づきます。多くの人が、これらの広告を閉じるように設定する方法を知りたいと考えています。この問題に対応して、Today's Softwareこのチュートリアルは、大多数のユーザーの質問に答えるためにここにあります。次に、詳細な手順を見てみましょう。エッジ ブラウザ広告をオフにする方法の紹介: 1. ソフトウェアを起動し、ページ上部の右側にある三点アイコンをクリックし、ドロップダウン オプション メニューで [設定] を選択します。 2. 新しいインターフェイスで、[詳細設定] をクリックし、[Web サイトの設定] で [使用] を見つけます。

エッジブラウザで互換モードを設定するにはどうすればよいですか? Edge ブラウザの互換性設定はどこで行うのですか? エッジブラウザで互換モードを設定するにはどうすればよいですか? Edge ブラウザの互換性設定はどこで行うのですか? Apr 15, 2024 pm 02:46 PM

エッジ ブラウザは、シンプルなインターフェイスながら充実した機能を備えたブラウザ ソフトウェアです。新しいバージョンのエッジ ブラウザに互換モードを設定したいと考えている人もいます。このチュートリアルでは詳細な操作チュートリアルを提供しますので、皆様のお役に立てれば幸いです。 Edge ブラウザ互換モードの設定 1. コンピュータの左下隅にあるスタート メニューをクリックし、Microsoft Edge ブラウザを選択します。 2. Edgeブラウザを開いたら、右上隅の「…」アイコンをクリックします。 3. ポップアップ オプションの [Internet Explorer で開く] オプションをクリックします。 4. IE を開いて閲覧します。

win7 システムブラウザが常に自動的に Web ページをポップアップする問題を解決する手順 win7 システムブラウザが常に自動的に Web ページをポップアップする問題を解決する手順 Mar 26, 2024 pm 09:30 PM

1. IEブラウザをご利用の場合は、図のようにIE画面の[ツール]から[インターネット オプション]を選択します。ページの下で、[ポップアップ ブロッカーを有効にする] にチェックを入れて確認します。図に示すように: 3. IE ブラウザ以外の場合は、Firefox などで設定することもでき、メイン メニューを開いて [オプション] を選択します。 ; 図のように 表示: 4. オプション設定画面で [コンテンツ] を選択し、右の画面で [ポップアップ ウィンドウをブロックする] にチェックを入れます; 図のように: 5. C: WINDOWSsystem32driversetc フォルダーに移動し、hosts ファイルを開き、プログラムを開くときに選択します。

See all articles