Javascript YouTube API播放器不再适用于Safari

Javascript YouTube API播放器不再适用于Safari,javascript,safari,youtube-api,Javascript,Safari,Youtube Api,我创建了一个自定义皮肤来播放YouTube视频。它过去在所有主流浏览器中都能工作。它现在不再适用于桌面计算机的Safari。以下是链接: 控制台记录一个错误,上面写着“error:error调用NPObject上的方法” 此错误是由的第100行的ytplayer.playVideo()引起的。该脚本在Firefox和Chrome中运行良好。我遇到了完全相同的问题,我对此进行了进一步的跟踪 在Safari中,我嵌入的“//www.youtube.com/apiplayer…”最终在inspect

我创建了一个自定义皮肤来播放YouTube视频。它过去在所有主流浏览器中都能工作。它现在不再适用于桌面计算机的Safari。以下是链接:

控制台记录一个错误,上面写着“error:error调用NPObject上的方法”


此错误是由的第100行的ytplayer.playVideo()引起的。该脚本在Firefox和Chrome中运行良好。

我遇到了完全相同的问题,我对此进行了进一步的跟踪

在Safari中,我嵌入的“//www.youtube.com/apiplayer…”最终在inspector中显示为https请求,即使我的页面是通过http提供的。即使我明确指定方案应该是http(“…”),我也会看到https请求。我认为这会触发混合模式安全问题,导致NPObject错误

同样的事情也发生在你的网站上

以下是最简单的示例:

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

如果我将用户代理更改为Safari以外的内容,也不会发生这种情况

杰米收到了这个问题的答案。谢谢你,杰米:

我更改了名为loadPlayer的函数。以前,该函数类似于:

// The "main method" of this sample. Called when someone clicks "Run".
function loadPlayer() {

   // Lets Flash from another domain call JavaScript
   var params = { allowScriptAccess: "always", wmode: "transparent" };

   // The element id of the Flash embed
   var atts = { id: "ytPlayer" };

   // All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)
   swfobject.embedSWF("http://www.youtube.com/apiplayer?" +
       "&enablejsapi=1&playerapiid=player1",
}
正如论坛底部的评论所述,版本号必须作为url中的参数传递。因此,更改此行:

swfobject.embedSWF("http://www.youtube.com/apiplayer?" +
致:


已修复此问题。

我已报告此问题:您在这方面取得了任何进展吗?正如我在下面提到的,我提交了一份bug报告,但我还没有找到任何解决办法。
swfobject.embedSWF("http://www.youtube.com/apiplayer?" +
swfobject.embedSWF("http://www.youtube.com/apiplayer?version=3" +