1. ホーム
  2. javascript

[解決済み] なぜ、この単純なaddEventListener関数の後に'false'が使われているのですか?

2022-09-19 18:24:07

疑問点

最後にあるfalseは何ですか?ありがとうございます。

window.addEventListener('load', function() {
  alert("All done");
}, false);

どのように解決するのですか?

MDNも見てみましたが、やはり useCapture が何のためにあるのか分からなかったので、公式ドキュメントを確認してもまだ分からない人のための回答です。

というわけで、まず、ほとんどすべてのブラウザで次のようなことが起こります。

IE<9を除くすべてのブラウザで、イベント処理は2段階あります。

イベントは最初にダウンします - これは キャプチャ で、次に 泡立つ . この動作はW3Cの仕様で標準化されています。

ということは useCapture を設定しても、この2つのイベントフェイズは常に存在することになります。

この絵は、その仕組みを示しています。

このモデルによると、イベント

Captures down - through 1 -> 2 -> 3.

バブルアップ - 3 -> 2 -> 1を通して。

続いてご質問です。3番目のパラメータである useCapture は、ハンドラにどちらのフェーズでイベントを処理させたいかを指定します。

useCapture = true

ハンドラはキャプチャフェーズで設定されます。イベントはその子に到達する前にそれに到達します。

useCapture = false .

バブリングフェーズでハンドラが設定されます。イベントは子プロセスに到達した後、それに到達します。

ということは、このようなコードを書けば

child.addEventListener("click", second);
parent.addEventListener("click", first, true);

子要素をクリックしたとき first メソッドが呼び出される前に second .

デフォルトでは useCapture フラグが設定されています。 false これは、ハンドラはイベント バブリング フェーズにのみ呼び出されることを意味します。

詳細な情報については をクリックしてください。 これ .