【发布时间】:2011-03-23 07:15:35
【问题描述】:
我有一个嵌入的 youtube 视频,我希望应用 YouTube API。我使用jQuery添加url参数如下(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 (updated demo)。
附录:当对象/嵌入已经包含启用代码时,为什么 YouTube API 不起作用?我试图避免使 SWFObject 成为依赖项。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="640" height="385">
<param name="movie" value="http://www.youtube.com/v/2Qj8PhxSnhg&hl=en_US&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&hl=en_US&fs=1&enablejsapi=1&version=3" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed>
</object>
【问题讨论】:
-
问题似乎是当您更改元素的 src 属性时,Chrome 和 IE 不会更新元素的 DOM/embed api。如果您直接在代码中添加查询字符串,则该代码确实有效。您的网站是否需要动态添加?
-
@Manticore:这不是必需的,我正在尝试修改插件。视频代码/链接由用户添加到列表中,因此我试图确定最简单的方法来完成这项工作,而无需设置任何规则,例如没有嵌入标签。
-
我遇到了同样的问题,在添加了 SWFObject 添加的 classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 属性后,IE 开始对我表现得恰到好处。
标签: javascript jquery youtube-api