3 番目のパラメーター (false) は何を示していますか?
document.addEventListener("deviceready",OnDeviceReady,false);
違いを示すためにスクリプトの例を示すことができますか
3 番目のパラメーター (false) は何を示していますか?
document.addEventListener("deviceready",OnDeviceReady,false);
違いを示すためにスクリプトの例を示すことができますか
これは歴史的な理由によるものです。ブラウザー イベント システムが最初に設計されたとき、その動作をモデル化する方法が 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
(泡立ち期)そのため、イベントはツリーを下っていき、再び上に戻ります。
これは に到達するための長い道のりですaddEventListener
。addEventListener
キャプチャ フェーズ イベントとバブリング フェーズ イベントの両方をリッスンします。3 番目のパラメーター (useCapture
仕様で呼び出されます) により、プログラマーは使用するフェーズを指定できます。
最新のブラウザでは、これはデフォルトでfalse
. 特に Internet Explorer がまだサポートしていないため、キャプチャ フェーズを使用したい状況に遭遇することはおそらくないでしょう。ただし、古いブラウザではfalse
を明示的に指定する必要があるため、通常は下位互換性のために提供されています。
useCaptureです:
の場合
true
、useCapture
ユーザーがキャプチャの開始を希望していることを示します。キャプチャを開始すると、指定されたタイプのすべてのイベントが登録されたにディスパッチされてから、DOM ツリー内のその下にlistener
ある にディスパッチされます。EventTarget
ツリーを上方にバブルするイベントは、キャプチャを使用するように指定されたリスナーをトリガーしません。詳細 な説明については、DOM レベル 3 イベントを参照してください。