2010-04-12 5 views
4

Вот часть моего кода HTML (URL видео отмечен с языка Джанго-шаблон переменных):YouTube Embeded плеер: изменение видеосвязь с JavaScript, динамически

<div class="mainPlayer"> 
     <object width="580" height="326"> 
      <param name="movie" value="{{main_video.video_url}}"></param> 
      <param name="allowFullScreen" value="true"></param> 
      <param name="allowscriptaccess" value="always"></param> 
      <embed src="{{main_video.video_url}}" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="326"></embed> 
     </object> 
    </div> 

и JS-кода (с помощью JQuery 1,4 .x)

$(document).ready(function(){ ..... 
$(".activeMovie img").live("click", function(){ 
    video_url = ($(this).parent().find('input').val()); 
    $('.mainPlayer').find('param:eq(0)').val(video_url); 
    $('.mainPlayer').find('embed').attr('src', video_url); 
}) 
... 
}) 

Такой алгоритм хорошо работает в ФФ 3.6.3, но не повезло в chrome4 или оперы 10.x., src и value не изменились, но YouTube игрок все еще показывает старое видео.

ответ

1

Try скрытие/отображение тега.

$('div.mainPlayer object').hide().show(); 

Это перезапускает весь Flash-фильм в большинстве браузеров.

+3

спасибо, правильное решение! но я его модифицировал, немного: $ ('. mainPlayer object'). hide(); setTimeout (function() {$ ('. MainPlayer object'). Show();}, 100); необходима некоторая задержка. –

0

Я думаю, вы должны использовать window.load вместо ready:

$(window).load(function(){ 
    // ....... 
} 
6

Вместо того, чтобы использовать прямой код YouTube, я бы использовал swfobject для кроссплатформенной флэш-вставки. Так что если у вас есть видео, расположенное внутри этого тега:

<div id='myvideo'></div> 

Чтобы встроить видео на YouTube, вы делаете следующее:

swfobject.embedSWF (<>, "MyVideo", "580", «326 "," 9.0.0 ");

Чтобы изменить видео, вы делаете это в JavaScript:

swfobject.removeSWF("myvideo"); 
swfobject.embedSWF(<<new video url>>, "myvideo", "580", "326", "9.0.0"); 

SWFObject (который размещается на Google Code) берет на себя все кросс-plaform флэш встраивание вопросы.

В качестве альтернативы вы можете использовать YouTube JavaScript API, чтобы изменить ваше видео на лету.

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