在现有播放器上启用YouTube API

我有一个嵌入了youtubevideo,我希望应用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( 更新演示 )。


附录:当对象/嵌入已经包含启用代码时,为什么YouTube API不起作用? 我试图避免使SWFObject成为一种依赖。

       

关于swfobject – 是的。 IE对Flash嵌入的处理方式略有不同(感谢activex),而不是其他所有浏览器。 查看本文以了解原因,以及SWFObject文档以获取更多信息。

另外,我最近创建了一个jQuery插件来帮助使用播放器API控制嵌入式播放器(基本上你正在做的事情)。

看看,它是jQuery TubePlayer插件 – http://www.tikku.com/jquery-youtube-tubeplayer-plugin

IE没有找到$('object')可能是因为你需要指定正确的类型(对obj长度做一个警告),但是如果你做obj = $('embed')它会工作。 以不同的方式包装东西可能是明智的,即执行$('

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