2014-11-10 11 views
5

Niektóre wtyczki stron trzecich dołączą do witryny eventListener. Jak usunąć eventListener bez znajomości funkcji, która jest dołączona.removeEventListener nie znając funkcji

Polecam ten removeEventListener, ale nie mogę uzyskać żadnej wskazówki, aby to usunąć.

Np .: getEventListeners(window) pokazuje związane z tym wydarzenia. Ale kiedy próbuję usunąć zdarzenie za pomocą window.removeEventListener("eventname") nie działa bez znajomości tej funkcji.

Proszę o pomoc, Z góry dziękuję.

Odpowiedz

7

getEventListeners(window) wyświetli mapę wydarzeń i ich zarejestrowanych słuchaczy.

Na przykład dla zdarzenia DOMContentLoaded można mieć wiele detektorów zdarzeń. Jeśli wiesz, indeks słuchacza, który chcesz usunąć (lub jeśli istnieje tylko jeden), można zrobić:

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

Jeszcze bardziej wygodne, ponieważ zwraca również funkcję wyrejestrowywania 'remove':' getEventListeners (window) .DOMContentLoaded [0] .remove() '. – dfsq

+0

@dfsq, 'chrome' yes, ale nie' firefox'. (nie można przetestować na przykład). – manji

+0

@manji Dzięki stary. Działa w chrome. – Dineshkani

4

Niestety, nie możesz tego zrobić. Ty potrzebujesz, aby uzyskać odwołanie do funkcji obsługi zdarzenia, aby usunąć ją przez removeEventListener.

Twoja jedyna opcja, jeśli nie możesz uzyskać tego odniesienia, oznacza całkowite zastąpienie tego Node.

+0

JANDY jest jakiś sposób, aby uzyskać to odwołanie za pośrednictwem jQuery lub javascript. Ponieważ to wydarzenie jest dodawane przez trzecią stronę i to wydarzenie jest dołączone w elemencie okna – Dineshkani

+0

@ Dineshkani AFAIK, nie ma (ale mam nadzieję, że niektórzy Ninja poprawią mnie tutaj, jeśli się mylę). Natywnie dodane zdarzenia za pośrednictwem 'addEventListener' nie są przechowywane gdziekolwiek dostępne przez Javascript. – jAndy

+0

Dzięki za odpowiedź @jAndy – Dineshkani

Powiązane problemy