document.addEventListener("deviceready",OnDeviceReady,false); の 3 番目のパラメータ (false) は何を示していますか? [重複] 質問する

document.addEventListener(

3番目のパラメータ(false)は何を示していますか?

document.addEventListener("deviceready",OnDeviceReady,false);

違いを示すサンプルスクリプトを見せてもらえますか?

ベストアンサー1

これは歴史的な理由によるものです。ブラウザ イベント システムが最初に設計されたとき、その動作をモデル化する 2 つの矛盾した方法がありました。それらは、イベント キャプチャとイベント バブリングと呼ばれていました。

たとえば、次の HTML を見てみましょう。

<html>
    <body>
        <a href="#">Content</a>
    </body>
</html>

要素上でイベント(クリックなど)が発生した場合a、祖先要素はそれを知るべきでしょうか?知るべきだというのは広く受け入れられていました。しかし、疑問はどのような順番で彼らに通知する必要があります。MicrosoftとNetscapeの開発者(これはかなりどうやって歴史的な話ですからね!)はそれぞれ異なる意見を持っていました。

1 つのモデルはイベント キャプチャです (Netscape 開発者が提唱)。これはhtml最初に要素に通知し、ツリーを下って処理を進めます。

  • html
  • body
  • a

もう 1 つのモデルはイベント バブリングです (Microsoft 開発者が提唱)。これは、まずターゲット要素に通知し、ツリーを上に向かって進みます。

  • a
  • body
  • html

最終的な妥協案は、両方

  • html(キャプチャフェーズ)
  • body(キャプチャフェーズ)
  • a(キャプチャフェーズ)
  • a(泡立ち段階)
  • body(泡立ち段階)
  • html(泡立ち段階)

したがって、イベントはツリーを下っていき、その後再び上に戻ります。

これは、 に到達するための長い方法ですaddEventListeneraddEventListenerキャプチャフェーズとバブリングフェーズの両方のイベントをリッスンします。3番目のパラメータ(useCapture(仕様では)プログラマーがどのフェーズを使用するかを指定できるようにしています。

最近のブラウザでは、これはデフォルトで になりますfalse。特に Internet Explorer がまだサポートしていないため、キャプチャ フェーズを使用する状況に遭遇することはおそらくないでしょう。ただし、古いブラウザでは をfalse明示的に指定する必要があるため、通常は下位互換性のために が提供されています。

おすすめ記事