Правильный способ использования element.addEventListener

У меня есть несколько функций JavaScript, которые ведут себя как прослушиватели событий для объекта <object/>, который запускает пользовательские события. Рассматриваемый объект — это проигрыватель YouTube с поддержкой JavaScript API. В документации приведен пример кода для подключения прослушивателя событий:

function onYouTubePlayerReady(playerId) {
  ytplayer = document.getElementById("myytplayer");
  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
  // note: quotes used ----------------------^---------------------^
  // note: callback function defined in an arbitrary location
}
function onytplayerStateChange(newState) {
   alert("Player's new state: " + newState);
}

Однако, согласно примерам addEventListener, которые я видел в других местах, не рекомендуется использовать кавычки. :

function onytplayerStateChange(newState) {
   alert("Player's new state: " + newState);
}
function onYouTubePlayerReady(playerId) {
  ytplayer = document.getElementById("myytplayer");
  // note: callback function defined EARLIER
  ytplayer.addEventListener("onStateChange", onytplayerStateChange);
}

Так какой метод правильный? Первый, казалось, работал во всех браузерах, но недавно я заметил странные проблемы, и мне интересно, связаны ли эти проблемы с тем, как вызывается addEventListener.


person Salman A    schedule 16.01.2012    source источник
comment
Функция onytplayerStateChange на самом деле является слушателем, который является функцией JavaScript, и я не могу найти ни одного места, где упоминается, что слушатель должен быть заключен в кавычки. Так что не использовать кавычки следует правильно.   -  person Golmaal    schedule 16.01.2012


Ответы (1)


Поскольку метод addEventListener на самом деле является методом, представленным в проигрывателе flash, а не собственным addEventListener, он действительно зависит от реализации кода AS3 внутри YTPlayer.

Я бы пошел с документацией и использовал кавычки

person Shlomi Schwartz    schedule 16.01.2012
comment
На самом деле функции addEventListener выглядят иначе. Где-то упоминается это поведение? - person Salman A; 16.01.2012