Как мне прикрепить обработчик событий jQuery к фильму YouTube?

StackOverflow https://stackoverflow.com/questions/1527617

Вопрос

[ПРАВИТЬ:Извините тех, кто уже ответил - в моем недосыпающем состоянии я забыл, что эта конкретная ситуация - фильм на YouTube, а не на JW FLV player.Я вижу, что существует более обширная документация по взаимодействию с фильмами YouTube, поэтому я продолжу в том же духе, но любая дополнительная информация также приветствуется]

Я использую встроенные видеоролики YouTube в коллекции divs, которые поворачиваются с помощью плагина jQuery cycle (http://malsup.com/jquery/cycle/).

Я бы хотел, чтобы цикл останавливался, когда я нажимаю на один из фильмов, чтобы начать его воспроизведение, но я не могу понять, как прикрепить обработчик событий jQuery к объекту player.

Вот как выглядит мой текущий код (вы не можете напрямую выбрать тег объекта с помощью jQuery, поэтому я выбираю родительский div, а затем получаю элемент object в качестве первого дочернего элемента):

$("div.feature-player").children(":first").click(function(event) {
   $('#features').cycle('stop');
});

Но это не помогает.Я не автор Flash, поэтому я не очень знаком с ActionScript, и я никогда раньше не настраивал взаимодействие между JavaScript и Flash-фильмом.

Это было полезно?

Решение

API проигрывателя YouTube довольно прост.Вам просто нужно прислушаться к onStateChange событие и управляйте подключаемым модулем цикла в зависимости от состояния:

Вот рабочая демо-версия: http://jsbin.com/izolo (Редактируемый через http://jsbin.com/izolo/edit)

И соответствующий код:

function handlePlayerStateChange (state) {
  switch (state) {
    case 1:
    case 3:
      // Video has begun playing/buffering
      videoContainer.cycle('pause');
      break;
    case 2:
    case 0:
      // Video has been paused/ended
      videoContainer.cycle('resume');
      break;
  }
}

function onYouTubePlayerReady(id){
  var player = $('#' + id)[0];
  if (player.addEventListener) {
    player.addEventListener('onStateChange', 'handlePlayerStateChange');
  }
  else {
    player.attachEvent('onStateChange', 'handlePlayerStateChange');
  }
}

Другие советы

Флэш-фильмы - это в значительной степени черные ящики с точки зрения javascript.Если SWF, который вы используете, не был написан для взаимодействия с javascript, то вам, вероятно, не повезло.

Вам либо нужно выяснить, какие методы javascript предоставляет фильм, который вы используете (надеюсь, у него есть документация), либо найти другой, который делает обеспечьте взаимодействие с javascript или напишите свой собственный SWF для его обработки.

То, что вы ищете, - это вспышка Внешний интерфейс класс, который используется для передачи данных от flash к javascript и от javascript к flash.

Если вы встраиваете проигрыватель с использованием swfobject, вы захотите использовать swfobject.getObjectById SWFObject.getObjectById чтобы получить ссылку на фильм.Прочтите документы, чтобы понять, почему вам нужно это сделать.

Также вам нужно будет установить {wmode: "transparent"} для проигрывателя, чтобы он отображал события щелчка в JavaScript.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top