YouTube Javascript API:加载在 Firefox 中不起作用



我有一个YouTube Javscript API的实现,在Chrome和Safari中运行良好,但在Firefox中则不然。是的,我正在网络服务器上执行此操作;)

在文档准备就绪时,我调用我的函数 showVideo();

这是所有相关代码:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>    
<div id="ytplayer" class="youtubepromovideo"></div>
<script type="text/javascript">   
function showVideo(){
    var params = { allowScriptAccess: "always" };
    swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=ytplayer", "ytplayer", "400", "400", "8", null, null, params);
}
function onYouTubePlayerReady(playerId) {
    console.log("player ready: "+playerId);
    loadNewVideo();
}
function loadNewVideo() {
    var id = 'jc8n44ddy9A';
    var startSeconds = 0;
    console.log("loading video");
    ytplayer.loadVideoById(id, startSeconds);
}
</script>

在所有浏览器中,播放器都会显示,但在 Firefox 中,视频不会加载。我的日志在Firefox上显示"正在加载视频"消息,但之后没有任何其他反应。甚至没有错误。如果我尝试在加载所有内容后手动调用ytplayer.loadVideoById('jc8n44ddy9A', 0);,则会收到错误ReferenceError: ytplayer is not defined

我意识到 ytplayer 并没有被我明确定义为变量,但我的猜测(?)是 YouTube API 这样做是因为它可以在其他浏览器中工作。此外,如果我只在某处全局定义var ytplayer,它不会修复它。

任何建议都非常感谢!

不确定其他浏览器从哪里获得ytplayer引用,但您应该全局定义它(无论如何,对于您给出的示例)并在onYouTubePlayerReady中添加对它的引用:

ytplayer = document.getElementById( playerId );

您可能最好使用iframe播放器,以便在没有Flash的浏览器中获得支持。 我相信可以使用"控件"参数在没有控件的情况下加载它。

相关内容

  • 没有找到相关文章

最新更新