【发布时间】:2017-08-18 17:54:58
【问题描述】:
问题没有出现在 chrome /!\
我正在使用 youtube API 提供的 iframe 播放器。如果没有按下或按住按钮,我创建了两个播放器并隐藏其中一个。 此外,我为它们中的每一个都使用了一个播放列表,并且启用了 autoplay off playerVars 选项。
我的问题是,当播放列表中的第二个视频到达 player2 时,它不会自动加载,并且该视频不是播放列表中希望播放的下一个视频。
一个例子正在这个地址运行 -> http://dev.alphas-projects.com 等待约 1 分钟,以便出现第二个视频,然后按住空格键切换到第二个播放器。你会看到问题。
注意:我很确定问题出在 youtube 播放器 API 代码上,因为如果我们禁用第二个视频播放器的“显示:无”,就会出现问题。
这是我的代码。
<div id=medias>
<div id=media-1 class=video-background>
<div class="video-foreground">
<div id="player1" frameborder="0" allowfullscreen="1"></div>
</div>
</div>
<div id=media-2 class=video-background style="display: none">
<div class="video-foreground">
<div id="player2" frameborder="0" allowfullscreen="1"></div>
</div>
</div>
</div>
Javascript
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player1;
var player2;
function onYouTubeIframeAPIReady() {
player1 = new YT.Player('player1', {
videoId: 'Ja53GAN1lpA',
playerVars: {
'autoplay': 1,
'loop': 1,
'showinfo': 0,
'controls': 0,
'rel': 0,
'playlist': 'WCBDPLga_tI,8RYpwS1vxKk'
},
events: {
'onReady': onPlayerReady1
}
})
player2 = new YT.Player('player2', {
videoId: 'B7C1eiP8qVU',
playerVars: {
'autoplay': 1,
'loop': 1,
'showinfo': 0,
'controls': 0,
'rel': 0,
'playlist': 'ou0E2tJrU_Q,yD1eVgZrD6U'
},
events: {
'onReady': onPlayerReady2
}
})
}
function onPlayerReady1(event) {
event.target.playVideo();
player1.setVolume(30);
}
function onPlayerReady2(event) {
event.target.playVideo();
player2.setVolume(30);
player2.mute();
}
【问题讨论】:
-
我在上面使用了您的代码(但删除了 style="display: none")。它似乎工作正常。所以你页面中的 js 可能是罪魁祸首。此外,videoID“yD1eVgZrD6U”被屏蔽,无法观看。
-
youtube.com/watch?v=yD1eVgZrD6U 为我工作...您是否等待播放列表中的第二个视频,因为第一个视频正常显示。只有在第二个到来时才会发生。无论如何,我会尝试用一个干净的项目测试代码,看看我的js是否是真正的问题。
-
yD1eVgZrD6U 被阻止在 YouTube 之外播放。在独立的嵌入式播放器上进行测试以查看。
-
是的,这只是我昨天在 youtube 上未选中的一个选项
标签: javascript html iframe youtube youtube-api