我有一个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
,则无法修复它。
非常感谢任何建议!
答案 0 :(得分:0)
不确定其他浏览器从何处获取ytplayer
引用,但您应该全局定义(无论如何您已经给出的示例)并在{{1}中添加对它的引用}:
onYouTubePlayerReady
使用iframe播放器可能会更好,也可以在没有Flash的浏览器中提供支持。我相信它可以在没有使用"controls" parameter的控件的情况下加载。