• 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?

Object Storage Arubacloud
+1 głos
223 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 (600,690 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 (600,690 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 (269,590 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ź 193 wizyt
0 głosów
1 odpowiedź 544 wizyt
0 głosów
1 odpowiedź 205 wizyt
pytanie zadane 17 sierpnia 2021 w JavaScript przez MarCiu Nowicjusz (160 p.)

92,536 zapytań

141,377 odpowiedzi

319,455 komentarzy

61,922 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...