Отслеживать состояния игрока Youtube в YUI.add - PullRequest
4 голосов
/ 01 февраля 2012

Мой код для встраивания видео на Youtube:

<object height="356" width="425" type="application/x-shockwave-flash" id="myytplayer" data="http://www.youtube.com/v/MTf6qXn5Prw?enablejsapi=1&amp;playerapiid=ytplayer&amp;version=3"><param name="allowScriptAccess" value="always"></object>

Я хочу отслеживать события проигрывателя Youtube (воспроизведение / пауза / остановка и т. Д.)

Следующий фрагмент кода работает независимо

window.onYouTubePlayerReady = function(playerId){
 ytplayer = document.getElementById("myytplayer");
  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");

}

window.onytplayerStateChange = function (newState) {
  alert("Player's new state: " + newState);

}

Я использую YUI.

Когда я добавляю то же самое в

YUI.add('module-name', function(Y) {

[some other code...]

window.onYouTubePlayerReady = function(playerId){
 // console.log(playerId); console.log(ytplayer);
  ytplayer = document.getElementById("myytplayer");

  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");

}

window.onytplayerStateChange = function (newState) {
  alert("Player's new state: " + newState);

}

},'3.4.0', {requires:'module-a', 'module-b'})

Функция onytplayerStateChange работает в Firefox и Safari, но не в других браузерах.

Затем я попробовал функции YUI, чтобы это работало во всех браузерах, поэтому я внес некоторые изменения

window.onYouTubePlayerReady = function(playerId){
  var shinyPlayer = Y.one("#myytplayer");
  shinyPlayer.on('onStateChange', function (e) {
            e.preventDefault();
            alert('here');
        });
}

, но у меня это не сработало.

Я не хочуПоместите window.onytplayerStateChange вне YUI.add ('имя-модуля', функция (Y) {})

Пожалуйста, предложите, что я должен сделать, чтобы отслеживать состояния проигрывателя Youtube во всех браузерах.

Заранее спасибо.

1 Ответ

0 голосов
/ 16 августа 2012

Я сделал jsFiddle для проверки этого:

http://jsfiddle.net/2Mj6b/4/

Мне кажется, что addEventListener - это пользовательская реализация Google. Обычно вторым параметром является обратный вызов / указатель на функцию, а не строка.

Если вы прикрепите переменную к объекту окна, она станет глобальной и будет видна из каждой области видимости. Так что это не проблема, если вы определите его в модуле YUI.

Вторая проблема заключается в том, что вы не можете использовать плеер в качестве объекта YUI, вам нужно остаться на объектах DOM, чтобы получить эту работу.

О, это старый вопрос. Черт. Но я все равно опубликую это. ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...