YouTube嵌入播放器:动态更改javascript视频链接

Ant*_*al' 4 youtube jquery

这是我的HTML代码的一部分(标有django-template语言变量的视频网址):

<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>
Run Code Online (Sandbox Code Playgroud)

和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);
})
...
})
Run Code Online (Sandbox Code Playgroud)

这样的算法在ff 3.6.3中运行良好,但在chrome4或opera 10.x.中没有运气,src并且value被更改,但是youtube播放器仍然显示旧视频.

Kel*_*tex 6

我不会使用直接的YouTube代码,而是使用swfobject进行跨平台的Flash嵌入.因此,如果您在此代码中有视频:

<div id='myvideo'></div>
Run Code Online (Sandbox Code Playgroud)

要嵌入YouTube视频,请执行以下操作:

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

要更改视频,请在javascript中执行此操作:

swfobject.removeSWF("myvideo");
swfobject.embedSWF(<<new video url>>, "myvideo", "580", "326", "9.0.0");
Run Code Online (Sandbox Code Playgroud)

swfobject(托管在谷歌代码上)负责处理所有跨平台闪存嵌入问题.

或者,您也可以使用YouTube JavaScript API动态更改视频.