Включить YouTube API на существующем плеере - PullRequest
5 голосов
/ 30 июля 2010

У меня есть встроенное видео на YouTube, к которому я хочу применить API YouTube. Я добавляю параметр url, используя jQuery, следующим образом ( demo ):

$(document).ready(function(){
 var obj = $('object');
 obj.find('embed').attr('src', function(i,s){return s+'&enablejsapi=1&version=3'})
 obj.find('param[name=movie]').attr('value', function(i,v){return v+'&enablejsapi=1&version=3'})

 $('.play').click(function(){
  obj.find('embed')[0].playVideo();
 });
 $('.pause').click(function(){
  obj.find('embed')[0].pauseVideo();
 })
});

Этот метод отлично работает в Firefox, но совсем не в IE или Chrome (не уверен в других браузерах). Итак, мой вопрос: как мне изменить это, чтобы заставить API работать в других браузерах? Должен ли я полностью удалить объект и заменить его, используя SWFObject ?

Примечание. Код для вставки прямо с YouTube.


Обновление: я понял, если я удалю объект, добавлю параметры URL, затем добавлю объект обратно, теперь я могу заставить его работать в Chrome, но все еще не в IE ( обновленная демоверсия ).


Приложение. Почему не работает API YouTube, если в объекте / коде уже есть код включения? Я пытаюсь избежать превращения SWFObject в зависимость.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="640" height="385">
 <param name="movie" value="http://www.youtube.com/v/2Qj8PhxSnhg&amp;hl=en_US&amp;fs=1&enablejsapi=1&version=3"></param>
 <param name="allowFullScreen" value="true"></param>
 <param name="allowscriptaccess" value="always"></param>
 <embed src="http://www.youtube.com/v/2Qj8PhxSnhg&amp;hl=en_US&amp;fs=1&enablejsapi=1&version=3" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed>
</object>

Ответы [ 2 ]

2 голосов
/ 09 августа 2010

По поводу swfobject - да.IE обрабатывает Flash-вставки немного по-другому (благодаря activex), чем все остальные браузеры.прочитайте эту статью , чтобы получить представление о том, почему, и документацию SWFObject для получения дополнительной информации.

Кроме того, недавно я создал плагин jQuery для управления встроеннымиигрок с помощью API игрока (в основном то, что вы делаете).

Проверьте это, это плагин jQuery TubePlayer - http://www.tikku.com/jquery-youtube-tubeplayer-plugin

1 голос
/ 11 августа 2010

IE не находит $('object'), может быть, потому что вам нужно указать правильный тип (сделать предупреждение по длине obj), но если вы сделаете obj = $('embed'), это будет работать. Возможно, было бы разумно обернуть вещи другим способом, то есть сделать $('<div id="test/>'), а затем добавить объекты / объекты и изменить значения src и movie.

РЕДАКТИРОВАТЬ: IE, кажется, не регистрируется object, пока не будет указан атрибут type или clsid, например

РЕДАКТИРОВАТЬ # 2: Вы можете просто проверить externalHTML элемента объекта @ http://savedbythegoog.appspot.com/retrieve_cache?unique_id=http://code.google.com/apis/ajax/playground/samples/boilerplateHTML/youtube/chromeless.html|http://code.google.com/apis/ajax/playground/samples/js/youtube/chromeless.js&defaultSample=true

...