2012-05-17 2 views
5

Я собираюсь обновить свой код, чтобы использовать addEventListener() только для записи в свойство element в javascript.Как мне добавить addEventListener?

Прежде чем я это сделаю, я хотел проверить несколько вещей.

1.) Я предполагаю, что мне не нужно вызывать removeEventListener(), если я обновляю DOM и удаляю элементы (по записи .innerHTML).

2.) addEventListener поддерживается на популярных современных браузеров - IE9, Chrome, Firefox, Safari

3.) Там нет других вопросов, которые могут arrise на современных браузерах.

Я прошу b.c. Я не хочу прыгать с пистолетом при обновлении кода.

Примечания:

свойство корреляции событий (удалить на).

  • OnKeyPress -
  • нажатие
  • ONBLUR -> Размытие
  • OnFocus -> фокус

Исследование

https://developer.mozilla.org/en/DOM/element.addEventListener (Имеет таблицу совместимости)

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

Связанные

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

Примечания

  • Вместо возвращения ложной. Используйте preventDefault(), чтобы остановить формы от отправки при вводе.
+0

Ваши предположения верны ... пойдите для этого ... btw, сохраните копию текущего файла, если вы этого не сделаете! –

+0

Хорошо ... если есть какие-то проблемы ... Я отправлю их здесь. –

+0

@ CS_2013 Для 'addEventListener', это нажатие клавиши. Кроме того, вы можете использовать jQuery для создания кросс-браузера. Под капотом он использует 'addEventListener', если возможно, может вернуться к' attachEvent' для более старого IE, а также нормализует ваш объект события, поэтому вам не нужно беспокоиться о различиях. – kapa

ответ

3
  1. Вам не придется. Если вы не храните ссылки на элемент DOM (например, в случайных глобальных переменных), сборщик мусора должен очистить его.

  2. Это поддержка браузера. Для старых IE есть attachEvent(), который делает почти то же самое.

  3. Ничего, о чем вы должны беспокоиться. Это современный путь.

Примечание: вы можете захотеть использовать jQuery для создания вещей кросс-браузер. Под капотом он использует addEventListener, если возможно, может вернуться к attachEvent для более старого IE, а также normalizes your event object, так что вам не нужно беспокоиться о различиях. Это также отлично подходит для манипуляций с DOM и обхода.

+0

Я не использую глобальные переменные ... так что я хорош там. –

4

1) Вам не нужно звонить removeEventListener по этому вопросу, но вам нужно будет позвонить removeEventListener если вы удалите DOM элемент, прикрепленный к EventListener через addEventListener, если вы удалите его детей вы не Не нужно ничего удалять.

2) addEventListener поддерживается на всех основных браузерах

3) Там нет других вопросов, на современных браузерах, связанных с addEventListener

4) OnKeyPress не название события, но атрибут, событие имя - нажатие клавиши.То же самое для других имен *, так

быстрый код, чтобы избежать JQuery для кросс-браузерной совместимости:

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

хороший чистый код ... я должен поддерживать старые браузеры, я включу это ... –

Смежные вопросы