YouTube嵌入请求仅针对Safari更改 - >无铬玩家无法操作

时间:2013-07-17 11:17:48

标签: safari youtube webkit youtube-api youtube-javascript-api

我有一个嵌入了YouTube Flash(AS3)播放器的网站,它已不再在Safari中使用。

查看this fiddle,其代码仅为:

<object type="application/x-shockwave-flash"
              data="http://www.youtube.com/apiplayer">
</object>

在Chrome,Firefox和IE中,http://www.youtube.com/apiplayer的请求正常返回(200)。在Safari中,服务器返回303到https://youtube.googleapis.com/apiplayer

此播放器已加载,但我无法在JavaScript中与其进行交互。我认为这是因为它是通过https提供的 - 虽然我明确要求http - 导致混合模式安全问题。这是我在尝试对播放器做任何事情时看到的错误(这是完整的无格式播放器嵌入代码):

>>> player.playVideo()
Error: Error calling method on NPObject.

如果我将Safari的用户代理更改为其他内容,或者甚至只修改“Safari”一词,则会加载正确的播放器。我也没有加载Vimeo和Viddler播放器(http://vimeo.com/moogaloop.swfhttp://www.viddler.com/player/key)。

我在稳定的Safari版本和WebKit中都看到了这一点。禁用我的扩展程序并处于私密浏览模式时也会出现这种情况。

我尝试通过嵌入http://youtube.googleapis.com来解决它,希望没有重定向,我会让播放器通过http。但它仍然会重定向到https,并且它在所有浏览器中都会重定向。

我上周提交了this YouTube API ticket,但到目前为止还没有回复。

2 个答案:

答案 0 :(得分:1)

似乎Safari和YouTube存在播放问题。 MacRumours http://forums.macrumors.com/showthread.php?t=1098606建议使用多种解决方案,例如切换到32位浏览器,使用非HTML5版本等。 似乎有效的方法如下:

  

选择Safari&gt;偏好&gt;隐私&gt;细节

     

搜索Youtube

     

删除名为youtube-nocookie.com的cookie,然后单击“完成”。

     

重新启动Safari,然后重试。

答案 1 :(得分:1)

YT API错误报告has been answered,并且有一种解决方法:将版本附加到网址:

<object type="application/x-shockwave-flash"
        data="http://www.youtube.com/apiplayer?version=3">
</object>

显然,当未指定版本时,它们仅回退到适用于Safari的AS2播放器。我不确定为什么会强制切换到https,但无论如何,这都有效。