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

时间:2012-07-06 20:06:01

标签: javascript youtube youtube-api youtube-javascript-api

我有一个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,则无法修复它。

非常感谢任何建议!

1 个答案:

答案 0 :(得分:0)

不确定其他浏览器从何处获取ytplayer引用,但您应该全局定义(无论如何您已经给出的示例)并在{{1}中添加对它的引用}:

onYouTubePlayerReady

使用iframe播放器可能会更好,也可以在没有Flash的浏览器中提供支持。我相信它可以在没有使用"controls" parameter的控件的情况下加载。