我有一个嵌入的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>
2条答案
按热度按时间vc6uscn91#
关于swfobject -是的。IE对待flash嵌入的方式与其他浏览器略有不同(感谢activex)。查看this article以了解原因,并查看SWFObject documentation以了解更多信息。
另外,我最近创建了一个jQuery插件,以帮助使用播放器API(基本上就是您正在做的事情)控制嵌入式播放器。
看看吧,这是jQuery TubePlayer插件-http://www.tikku.com/jquery-youtube-tubeplayer-plugin
s3fp2yjn2#
IE找不到
$('object')
可能是因为你需要指定正确的类型(在obj长度上做一个警报),但是如果你做obj = $('embed')
,它会工作。明智的做法可能是以不同的方式进行 Package ,即执行$('<div id="test/>')
,然后附加embed/对象并更改src
和movie
的值。编辑:IE似乎没有注册
object
,直到它有一个type
或clsid
属性指定,如编辑#2:您可能只需要检查对象元素@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的outerHTML