簡単な質問:event.preventDefault()
要素が「キャプチャ」、「アット」、および「バブリング」フェーズの一部である限り、イベント ハンドラーを設定した要素に関係なく実行できますか?
ページ上ですべてを選択できないようにしたかったので、最初はやりたかった
document.addEventListener("selectstart", function(ev) {
ev.stopPropagation();
}, true);
キャプチャ フェーズの最初の段階では、ページ コンテンツ要素に伝播しないため、選択は行われません。
ただし、伝播が停止しても、デフォルトのアクションは引き続き実行されるようです。
そして、キャプチャフェーズでこれを実行しようとしました:
document.addEventListener("selectstart", function(ev) {
ev.preventDefault();
}, true);
次に、をに変更しtrue
てfalse
、バブリング フェーズ中にハンドラーが呼び出されるようにします。
document.addEventListener("selectstart", function(ev) {
ev.preventDefault();
}, false);
それも機能します。
「preventDefault」は要素ごとだと思っていました。
したがって、キャプチャ段階、段階、バブリング段階のすべてで呼び出すことができev.preventDefault()
、それはまったく同じイベントオブジェクトであり、ハンドラーを設定する要素に関係なく、デフォルトのアクションを防ぐことができます。要素は「キャプチャ」、「アット」、および「バブリング」ループにありますか?