特定のEventListenerを最後に(デフォルトアクションの前に)実行するようにEventTargetを追加したい場合に登録された順序とは別にを追加し、イベントがキャンセル可能でないことを意味しますこの目的を達成するために一度トリガーされた。EventListenerを最後に確実に実行する方法を教えてください。
イベントリスナー内で既に.addEventListenerを使用しようとしましたが、これは、イベントが発生した次回のイベントで実行されるEventListenerのみを登録します。 残念ながら、EventListenerListはDOM仕様の一部にはなりませんでした。つまり、.stopImmediatePropagationを使用し、最後に実行するアクションを実行する前に他のイベントを手動で実行するオプションではありません。
私はそれらが実行される順序を探していません、私は最新のブラウザエンジンが登録順にEventListenersを実行することを認識しています。私はその行動を迂回する方法について尋ねています(結果としてのみ)。
具体的な必要性はコンテンツスクリプト(つまり、追加された他のEventListeners(またはそれが起こる順序)を制御できないことを意味します)を使用する直前にURLを書き換えます。同じイベント中に自分の書き換えを行う。
現在の動作の一例:
// The content script:
document.getElementById("target").addEventListener("click",last);
function last() {
this.innerHTML="Correct!";
console.log("This is supposed to occur last.")
}
// The webpage:
document.getElementById("target").addEventListener("click",first);
function first() {
this.innerHTML="Incorrect!";
console.log("This is supposed to occur first.")
}
<button id="target">
Click me!
</button>
コードを入力してください –
[複数のイベントリスナーの順序](https://stackoverflow.com/questions/9512551/the-order-of-multiple-event-listeners) – cgTag
の可能な複製がわかりましたら、クリックイベントの代わりにURL変更イベントを処理することもできます – Slai