播放 youtube 视频的 javascript 不起作用
Posted
技术标签:
【中文标题】播放 youtube 视频的 javascript 不起作用【英文标题】:javascript to play youtube video isn't working 【发布时间】:2012-03-30 19:55:55 【问题描述】:html
<html>
<head>
<style type="text/css"> body background-color: transparent; color: white;
</style>
</head>
<body style="margin:0">
<embed id="yt" src="http://www.youtube.com/v/6eK-W32IME0?fs=1&hl=en_US&enablejsapi=1" type="application/x-shockwave-flash" ></embed>
</body>
</html>
我正在运行以尝试播放视频的代码是
var yt = document.getElementById("yt");
yt.playVideo();
我得到的 JS 错误是
TypeError: Object #<HTMLEmbedElement> has no method 'playVideo'
但似乎其他人都是这样做的。有什么关系?
** 编辑 **
jsfiddle
** 编辑 **
The current JSFiddle 现在可以在 pc/mac 上正常运行,但不能在 iPad 上运行。
【问题讨论】:
对我来说没问题jsfiddle.net/A3jgy。你在什么浏览器中测试? @BogdanEmilMariesan jsfiddle.net/A3jgy/3 更像是我所看到的。嵌入效果很好,但临时播放按钮不行。 @Jackson 我已经用一个使用object
元素的工作示例更新了我的原始答案。
【参考方案1】:
我认为您需要将&enablejsapi=1
添加到引用<embed>
对象中视频的URL 的查询字符串中。
另外,尝试用<object>
元素替换您的<embed>
元素。这是working example。
关于 ios/Mobile Webkit 的说明:
显然,根据this answer,Apple 明确禁止在 Safari 或其他 Mobile Webkit 浏览器中自动控制嵌入式媒体,要求 iOS 用户直接与视频对象交互以启动播放。这适用于 object
和 embed
元素,以及 HTML5 video
和 audio
元素。
【讨论】:
在电脑上效果很好,但由于某种原因在 iPad 上效果不佳。它必须在那里工作,所以我很困惑 atm。 嗯,那是因为 iOS 设备不支持 Flash。时期。如果您使用 iframe 在您的页面上嵌入视频,YouTube 将智能地检测观众的设备并为每个设备提供相应版本的视频。但是,然后,您将失去您尝试实现的脚本控制。长话短说:您需要检测网页上的 Flash 功能并根据测试结果生成object
或 video
标记。
我应该指出,播放的视频实际上可以在 ipad 上运行(youtube 在这里做了一些花哨的事情)。只是playVideo
功能在 ipad 中有点失效。
显然,根据这个答案 (***.com/a/9028877/1030243),Apple 明确禁止自动控制 Safari 中的嵌入式媒体,要求 iOS 用户直接与视频对象交互才能启动播放。
Aaron,也许您应该将您的最后一条评论移至答案。这是一条重要的信息。该死的Apple,即使在Chrome中我们也无法从外部启动播放。【参考方案2】:
你没有加载 JS api 试试这个:
<embed id="yt" src="http://www.youtube.com/v/6eK-W32IME0?fs=1&hl=en_US&enablejsapi=1" type="application/x-shockwave-flash" ></embed>
要了解有关 youtubes JS api 的更多信息,请查看https://developers.google.com/youtube/js_api_reference
【讨论】:
嗯。还是一样的。 (新代码添加到我的原始示例中)以上是关于播放 youtube 视频的 javascript 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Youtube API如何在视频结束时从0秒开始播放视频?框架,Javascript
播放 youtube 视频的 javascript 不起作用