• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Czy eventlistener usuwa się wraz z elementem?

VPS Starter Arubacloud
+1 głos
285 wizyt
pytanie zadane 25 marca 2021 w JavaScript przez Author[] Gaduła (3,130 p.)
zamknięte 25 marca 2021 przez Author[]
Czy metoda element.remove() usuwa również powiązane z nim event listenery?
komentarz zamknięcia: Otrzymałem rozwiązanie

2 odpowiedzi

+3 głosów
odpowiedź 25 marca 2021 przez Comandeer Guru (603,480 p.)
wybrane 25 marca 2021 przez Author[]
 
Najlepsza

Nie. To tak naprawdę następuje dopiero, gdy element jest zbierany przez garbage collectora – czyli gdy nie istnieje żadna referencja do niego (nie robisz z nim nic ani nie masz go zapisanego w żadnej zmiennej).

element.remove usuwa element z drzewa DOM, ale dalej da się na nim odpalić zdarzenia.

komentarz 25 marca 2021 przez Author[] Gaduła (3,130 p.)
Czy w takim razie istnieje metoda żeby usunąć wszystkie eventListenery elementu?

Wiem o element.removeEventListener(), jednak element ma dynamicznie przydzielane listenery przez co pojedyncze usuwanie byłoby dość kłopotliwe
1
komentarz 25 marca 2021 przez Comandeer Guru (603,480 p.)

Tak, istnieje, wykorzystanie AbortSignal. Dzięki niemu można usunąć kilka listenerów naraz. Jedyny problem może być ze wsparciem w przeglądarkach. Na pewno działa to w Chrome.

komentarz 25 marca 2021 przez Author[] Gaduła (3,130 p.)
Dziękuję!
+1 głos
odpowiedź 25 marca 2021 przez Wiciorny Ekspert (273,850 p.)

Zależy jak event jest nałożony na element, czy na bazie selektora klasy, czy onClicka jakiegoś, bo jeśli jest on wywoływany z innego elementu np. to w momencie usunięcia, będzie  to wywoływanie metody na obiekcie którego nie ma i wtedy będzie błąd.
Zależy to  od implementacji

Więc tak jak tutaj podsumowanie- referencja musi być zwolniona. 

In modern browsers, if a DOM Element is removed, its listeners are also removed from memory in javascript.

Note that this will happen ONLY if the element is reference-free. Or in other words, it doesn't have any reference and can be garbage collected. Only then its event listeners will be removed from memory.

komentarz 25 marca 2021 przez Author[] Gaduła (3,130 p.)
Czy działa to także w wypadku eventów utworzonych z CustomEvent ?

Podobne pytania

0 głosów
1 odpowiedź 231 wizyt
0 głosów
1 odpowiedź 652 wizyt
0 głosów
1 odpowiedź 220 wizyt
pytanie zadane 17 sierpnia 2021 w JavaScript przez MarCiu Nowicjusz (160 p.)

92,768 zapytań

141,691 odpowiedzi

320,510 komentarzy

62,106 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...