2012-05-17 14 views
5

Mam zamiar zaktualizować mój kod, aby użyć metody addEventListener() zamiast pisania do właściwości elementu w javascript.Jak zaktualizować program addEventListener?

Zanim to zrobię, chciałem zweryfikować kilka rzeczy.

1.) Zakładam, że nie muszę wywoływać metody removeEventListener(), jeśli zaktualizuję DOM i usunę elementy (przez .innerHTML write).

2.) addEventListener jest obsługiwany w popularnych nowoczesnych przeglądarek - IE9, Chrome, Firefox, Safari

3.) Brak innych kwestii, które mogłyby arrise na nowoczesnych przeglądarek.

Pytam b.c. Nie chcę przeskoczyć pistoletu, aktualizując mój kod.

Uwagi:

nieruchomość do korelacji zdarzeń (usuń on).

  • onkeypress - przyciśnięcie
  • onblur -> Rozmycie
  • onfocus -> koncentrować

Badania

https://developer.mozilla.org/en/DOM/element.addEventListener (Has Wykres kompatybilność)

http://www.quirksmode.org/js/events_advanced.html

pokrewne

JavaScript listener, "keypress" doesn't detect backspace?

Uwagi

  • zamiast wrócić fałszywe. Użyj metody preventDefault(), aby zatrzymać wysyłanie formularzy przy wprowadzaniu.
+0

Twoje założenia są poprawne ... idź do niego ... btw, przechowuj kopię aktualnego pliku na wypadek, gdybyś nie był! –

+0

W porządku .... jeśli są jakieś problemy ... Zamieszczę je tutaj. –

+0

@ CS_2013 Dla 'addEventListener', jest to naciśnięcie klawisza. Ponadto możesz użyć jQuery do robienia rzeczy w różnych przeglądarkach. Pod maską używa 'addEventListener' jeśli to możliwe, może wrócić do' attachEvent' dla starszego IE, a także normalizuje twój obiekt zdarzenia, więc nie musisz się martwić różnicami. – kapa

Odpowiedz

3
  1. Nie musiał. Jeśli nie przechowujesz odniesień do elementu DOM (na przykład przypadkowych zmiennych globalnych), garbage collector powinien je wyczyścić.

  2. To jest obsługa przeglądarki. Dla starszych IE jest attachEvent(), który ma prawie to samo.

  3. Nic, o co powinieneś się martwić. To jest nowoczesna droga.

Uwaga: może chcesz używać jQuery na tworzenie rzeczy cross-browser. Pod maską używa addEventListener, jeśli to możliwe, może cofnąć się do attachEvent dla starszych IE, a także normalizes your event object, więc nie musisz się martwić różnicami. Jest także doskonały do ​​manipulacji DOM i przemierzania.

+0

Nie używam globaliów ... więc jestem dobry. –

4

1) Nie trzeba zadzwonić removeEventListener dla tej sprawy, ale trzeba będzie zadzwonić removeEventListener jeśli usunąć element DOM dołączony do EventListener poprzez addEventListener, jeśli usunąć z jej dzieci don nie musisz niczego usuwać.

2) addEventListener jest obsługiwana na wszystkich głównych przeglądarek

3) Nie istnieją żadne inne kwestie dotyczące nowoczesnych przeglądarek związanych addEventListener

4) onkeypress nie jest nazwa zdarzenia, ale atrybutu, tym wydarzeniu nazwa to keypress.Takie same dla innych nazw na * zarówno

szybkie kodu, aby uniknąć jQuery dla kompatybilności z różnymi przeglądarkami:

Element.prototype.on = function(evt, fn) { 
if (this.addEventListener) 
    this.addEventListener(evt, fn, false); 
else if (this.attachEvent) 
    this.attachEvent('on' + evt, fn); 
}; 

Element.prototype.off = function(evt, fn) { 
    if (this.removeEventListener) 
     this.removeEventListener(evt, fn, false); 
    else if (this.detachEvent) 
     this.detachEvent('on' + evt, fn); 
}; 
+0

ładny, czysty kod ... czy powinienem obsługiwać starsze przeglądarki, włączę to ... –