web-dev-qa-db-ja.com

関数を知らなくてもremoveEventListener

一部のサードパーティプラグインは、eventListenerをサイトに添付します。アタッチされた関数を知らずにeventListenerを削除する方法。

私はこれを参照します removeEventListener しかし、これを削除する手がかりを得ることができません。

例:getEventListeners(window)は添付されたイベントを示します。しかし、window.removeEventListener("eventname")を使用してイベントを削除しようとすると、その関数を知らないと機能しません。

助けてください、よろしくお願いします。

20
Dineshkani

getEventListeners(window)は、イベントとその登録済みイベントリスナーのマップを返します。

したがって、たとえばDOMContentLoadedイベントの場合、多くのイベントリスナーを持つことができます。削除するリスナーのインデックスがわかっている場合(または存在する場合)、次のことができます。

var eventlistener = getEventListeners(window)["DOMContentLoaded"][index];
window.removeEventListener("DOMContentLoaded", 
                           eventlistener.listener,
                           eventlistener.useCapture);
18
manji

残念ながら、それはできません。 needremoveEventListenerで削除するには、イベントハンドラー関数への参照が必要です。

その参照を取得できない場合の唯一のオプションは、そのNodeを完全に置き換えることです。

7
jAndy