0

我有一个 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在某个地方全局定义它并不能解决它。

任何建议都非常感谢!

4

1 回答 1

0

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

ytplayer = document.getElementById( playerId );

使用iframe播放器可能会更好,因为它也支持没有 Flash 的浏览器。我相信它可以在没有控件的情况下使用“控件”参数加载。

于 2012-07-08T21:44:52.170 回答