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
(泡立ち段階)
したがって、イベントはツリーを下っていき、その後再び上に戻ります。
これは、 に到達するための長い方法ですaddEventListener
。addEventListener
キャプチャフェーズとバブリングフェーズの両方のイベントをリッスンします。3番目のパラメータ(useCapture
(仕様では)プログラマーがどのフェーズを使用するかを指定できるようにしています。
最近のブラウザでは、これはデフォルトで になりますfalse
。特に Internet Explorer がまだサポートしていないため、キャプチャ フェーズを使用する状況に遭遇することはおそらくないでしょう。ただし、古いブラウザでは をfalse
明示的に指定する必要があるため、通常は下位互換性のために が提供されています。