20

http://www.quirksmode.org/js/events_order.htmlを見ていましたが、この部分があいまいです:

cancelBubbleMicrosoft モデルでは、イベントのプロパティを に設定する必要がありますtrue

window.event.cancelBubble = true

stopPropagation()W3C モデルでは、イベントのメソッドを呼び出す必要があります。

e.stopPropagation()

これにより、バブリング フェーズでのイベントの伝播がすべて停止します。

だから私の質問は:

  • イベント リスナーがキャプチャ フェーズでリッスンするように設定されている場合、内部要素への伝播は自動的に続行されませんか?
  • または、伝播を続ける場合、呼び出しはそれをe.stopPropagation()停止しますか、それともバブル段階でのみ機能しますか?
4

3 に答える 3

38

短い答え: 順序は次のとおりです。

  1. キャプチャ (ダウン)
  2. 目標
  3. わきたつ)。

e.stopPropagation()キャプチャフェーズで呼び出すと(addEventListener()3 番目の引数を に設定してtrue)、1 で停止するため、2 & 3 は受信できません。

e.stopPropagation()バブル フェーズで呼び出した場合(addEventListener()3 番目の引数を に設定するfalseか、割り当てないことにより)、1 と 2 は既に完了しているため、呼び出したレベルからイベントがバブルするのを防ぐだけですstopPropagation()

于 2015-10-26T15:44:14.607 に答える
5

いいえ、明示的に指示しない限り、イベント リスナーはイベントの伝播を停止しません。あなたが言及している部分は、特にバブルフェーズを扱っています。IE のモデルはイベント キャプチャをサポートしていません - 完全停止。キャプチャ フェーズは、バブリング フェーズの前にあるものです。

Top of the DOM --->event--->traverses--->to--->[target]+[event]-| (capture phase)
      /\                                                       \/
      |------------------------to--------back up-----------------  (bubble up)
于 2012-09-17T15:53:45.617 に答える