最近、私はイベントのキャプチャとバブリングに関連する問題を詳しく研究しています。
私はこのように理解していますが、それが正しいかどうかはわかりません。見てください。
イベント伝播メカニズムは、キャプチャ ステージ、ターゲット ステージに到達、およびバブリング ステージの 3 つのステージに分かれています。この伝播メカニズムの目的は、イベントが発生するかどうか、どのような種類のイベントが発生するか、どこで発生するかを監視することだと思います。いわゆるイベントキャプチャとは、ブラウザがイベントが発生したかどうかを調べることであり、イベント発生後の処理時間は、イベント処理関数とaddEventListener()の最後のパラメータを登録することで実現されます。
しかし、この考えに従うと、このような問題が発生します。
たとえば、次のようなコードがあります
リーリーキャプチャ メソッドを使用してイベントを処理し、イベントがイベント処理関数内で伝播し続けるのを防ぎます。これは当然のことのように思えますが、私の質問は、イベントの伝播が停止した場合、ブラウザーはイベントが発生した場所をどのようにして知るのでしょうか?イベントが発生したことをどのようにして知るのでしょうか?イベントが発生したことを認識していない場合、対応するイベント ハンドラーをどのように実行できるでしょうか?
あなたの矛盾は、キャプチャフェーズについての誤った理解が原因です。名前を気にする必要はありません。キャプチャとバブリングは同じレベルにあり、一方は外側から内側に、もう一方は内側から外側に働きます。したがって、イベント割り込みは伝播前ではなく、伝播プロセス中に中断されます。
入手方法について話している場合。 答えは JavaScript イベント ループにあると思います
リンク: https://developer.mozilla.org...
コードはブラウザーによって実行され、イベントはブラウザーによって検出され、ブラウザーは指定したイベントの実行を支援します。
それでは、ブラウザはどのようにしてそれを認識するのでしょうか?
これは、JavaScript がディレクティブ言語であるためです。つまり、作成するすべての JavaScript ステートメントは、ブラウザーに何かを行うよう通知する命令です。たとえば、最も単純な document.getElementById() は、実際には JavaScript 自体ではなく、関連する DOM を取得するようにブラウザーに通知します。イベント処理についても同様です。
クリックして実行
disableClickHandler
し、イベントの拡散を防ぎます...知りたくないのです。
それも分かりません。
怠惰だと言いました。