在现有播放器上启用 YouTube API

问题描述 投票:0回答:2

我有一个嵌入的 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 中工作(更新的演示)。


附录:当对象/嵌入中已包含启用代码时,为什么 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&amp;hl=en_US&amp;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&amp;hl=en_US&amp;fs=1&enablejsapi=1&version=3" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed>
</object>
javascript jquery youtube-api
2个回答
2
投票

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

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

检查一下,这是 jQuery TubePlayer 插件 - http://www.tikku.com/jquery-youtube-tubeplayer-plugin


1
投票

IE 找不到

$('object')
可能是因为您需要指定正确的类型(对 obj 长度发出警报),但如果您这样做
obj = $('embed')
它将起作用。以不同的方式包装事情可能是明智的,即执行
$('<div id="test/>')
,然后附加嵌入/对象并更改
src
movie
值。

编辑:IE似乎不会注册

object
,直到它指定了
type
clsid
属性,例如

编辑#2:您可能只需检查对象元素的outerHTML @ 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

© www.soinside.com 2019 - 2024. All rights reserved.