我有一个嵌入了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.swf和http://www.viddler.com/player/key)。
我在稳定的Safari版本和WebKit中都看到了这一点。禁用我的扩展程序并处于私密浏览模式时也会出现这种情况。
我尝试通过嵌入http://youtube.googleapis.com
来解决它,希望没有重定向,我会让播放器通过http。但它仍然会重定向到https,并且它在所有浏览器中都会重定向。
我上周提交了this YouTube API ticket,但到目前为止还没有回复。
答案 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,但无论如何,这都有效。