我假设您正在使用第三方 youtube Iframe API 将 youtube 播放器加载到 div 中。 youtube 的代码实际上有一个竞争条件,如果在调用 onYouTubeIframeAPIReady 之前浏览器未加载/解析 div,则视频加载将失败。在 Firefox 中,它只会挂起一秒钟,而 Chrome 足够聪明,可以处理这个问题。
解决办法是确保这段代码。在解析完包含视频的容器后运行。
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
还有这段代码……
function onYouTubeIframeAPIReady() {
具有全局范围并在脚本创建后调用。
我通常解决这个问题的方法是使用标签创建器和事件侦听器创建一个函数“类”,并在我的 document.ready 函数中创建对象。然后就在我放置的 document.ready 函数的正下方。
function onYouTubeIframeAPIReady() {
myVideo.apiReady();
}
'myVideo' 是我创建的类和 apiReady();包含。
this.apiReady = function () {
player = new YT.Player('player', {
height: '548',
width: '900',
videoId: 'VIDEO234324',
events: {
'onReady': onPlayerReady
}
});
}
我希望这会有所帮助。