3番目のパラメーター(false)は何を示しますか
document.addEventListener("deviceready",OnDeviceReady,false);
誰でも違いを示すためのスクリプト例を示すことができますか
true
の場合、useCapture
は、ユーザーがキャプチャを開始したいことを示します。キャプチャの開始後、指定されたタイプのすべてのイベントは、DOMツリーでその下のlistener
sにディスパッチされる前に、登録されたEventTarget
にディスパッチされます。ツリーを上方向にバブリングしているイベントは、キャプチャを使用するように指定されたリスナーをトリガーしません。詳細な説明については、 DOMレベル3イベント を参照してください。
これは歴史的な理由によるものです。ブラウザイベントシステムが最初に設計されたとき、それがどのように機能するかをモデル化する2つの矛盾する方法がありました。それらはイベントキャプチャおよびイベントバブリングと呼ばれていました。
たとえば、次のHTMLをご覧ください。
<html>
<body>
<a href="#">Content</a>
</body>
</html>
a
要素でイベント(クリックなど)が発生した場合、祖先要素は知っている必要がありますか?彼らがすべきであることが広く受け入れられました。しかし、質問はどの順序で通知されるべきかでした。 MicrosoftとNetscapeの開発者(これは、私たちが話している歴史的なhowのアイデアをあなたに与えるはずです!)意見が異なりました。
1つのモデルはイベントキャプチャでした(Netscape開発者が提唱)。これは、最初にhtml
要素に通知し、ツリーを下って行きました:
html
body
a
もう1つのモデルは、イベントバブリング(Microsoft開発者が提唱)です。これは最初にターゲット要素に通知し、ツリーを上って行きました:
a
body
html
最終的な妥協案は、bothを実行することでした。
html
(キャプチャ段階)body
(キャプチャ段階)a
(キャプチャ段階)a
(バブリングフェーズ)body
(バブリングフェーズ)html
(バブリングフェーズ)そのため、イベントはツリーを下って行き、再びバックアップします。
これは、addEventListener
に到達するまでの長い方法です。 addEventListener
は、キャプチャ段階とバブリング段階の両方のイベントをリッスンします。 3番目のパラメーター(仕様では useCapture
と呼ばれます)を使用すると、プログラマーは使用するフェーズを指定できます。
最新のブラウザでは、これはfalse
にデフォルト設定されます。特にInternet Explorerはまだサポートしていないため、キャプチャフェーズを使用したい状況に出くわすことはおそらくないでしょう。ただし、古いブラウザではfalse
を明示的に指定する必要があるため、一般的に下位互換性のために提供されています。