外部のサードパーティスクリプトを使用しています。これは、イベントハンドラ(たとえば、onclick
)をHTML要素にバインドします。私のスクリプトでは、同じ要素に対するイベントハンドラの条件によって、発生するかどうかを制御したいと考えています。私はevent.stopImmediatePropagation()
を試しましたが、うまくいきませんでした。バニラJSを使ってどうすればいいですか?バニラJSで同じ要素のイベントハンドラを条件付きでブロックする方法は?
:上記のコードで
<script> //third-party script, cannot edit
document.getElementById('test').addEventListener('click', function (e) {
alert('clicked');
});
</script>
<script> //my script, can edit
document.getElementById('test').addEventListener('click', function (e) {
if (document.getElementById('block').checked) {
//block click event from third-party script
}
});
</script>
、alert('clicked')
は単なる一例です。実際には、イベントハンドラに貼り付けることができない複雑なロジックがたくさんあります。
匿名のイベントリスナー(あなたの場合)をプログラムで削除する方法はありません。 – mehulmpt
明らかに要素を作り直さない限り – mehulmpt
@MehulMohan道があるはずです! – niutech