我有一个包含图像和视频的Bootstrap走马灯,它很好用。但是当我们切换到下一张幻灯片时,当前正在播放的活动幻灯片中的视频应该被暂停。现在,即使移动到下一张幻灯片,视频仍在播放。
非常感谢您的帮助!
谢谢!
非常感谢您的帮助!
谢谢!
$('#myCarousel').carousel({
interval: 3000
});
$('#myCarousel').carousel({
interval: 3000
});
<script language="JavaScript" type="text/javascript">
$(document).ready(function () {
$('.carousel').carousel({ interval: 8000 })
$('#myCarousel').on('slide.bs.carousel', function (args) {
var videoList = document.getElementsByTagName("video");
switch (args.from) {
case 0:
videoList[0].pause();
break;
case 1:
videoList[1].pause();
break;
case 2:
videoList[2].pause();
break;
}
switch (args.to) {
case 0:
videoList[0].play();
break;
case 1:
videoList[1].play();
break;
case 2:
videoList[2].play();
break;
}
})
});
</script>
slide.bs.carousel
来实现此目的:
那么如果发生这个事件,我会使用 JavaScript 中的 player.pauseVideo()
功能来控制 Youtube iframe API:
示例代码片段:
// When a slide occurs, pause the current iframe video that is playing
// player.pauseVideo():Void - Pauses the currently playing video.
// Reference: https://developers.google.com/youtube/iframe_api_reference#Playback_controls
$('#moviesCarousel').on('slide.bs.carousel', function(event) {
// The variable "players" contain each Youtube Player for each iframe video
// Reference: https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player
// event.from - The index of the current video (before the slide occurs)
// - It is also the index of the corresponding player for the current video
// Reference: https://getbootstrap.com/docs/4.4/components/carousel/#events
players[event.from].pauseVideo();
});
说明:
event.from
对应于幻灯片发生之前的轮播视频项的索引players
是 YT.Player 实例的列表,其中每个实例控制 1 个特定的 iframe Youtube 视频(因此是轮播视频列表中的 1 个视频项)。这假设轮播视频的顺序映射到其相应的 YT.Player 实例的相同顺序有关完整的工作 html 代码,请参阅我在另一个线程中的答案: