diff --git a/index.js b/index.js index 1f428f9..cb81385 100644 --- a/index.js +++ b/index.js @@ -23,14 +23,18 @@ const playVideo = (slide) => { if (youtube) { if (slide.YTPlayer) { - slide.YTPlayer.playVideo(); + if (slide.classList.contains('swiper-slide-active')) { + slide.YTPlayer.playVideo(); + } } else if (window.YT) { if (GalleryYTPlayer.state) { slide.YTPlayer = new YT.Player(youtube, { videoId: youtube.dataset.id, events: { onReady(event) { - event.target.playVideo(); + if (slide.classList.contains('swiper-slide-active')) { + event.target.playVideo(); + } }, }, }); @@ -47,12 +51,16 @@ const playVideo = (slide) => { } } else if (vk) { if (slide.VKPlayer) { - slide.VKPlayer.play(); + if (slide.classList.contains('swiper-slide-active')) { + slide.VKPlayer.play(); + } } else if (window.VK?.VideoPlayer) { if (GalleryVKPlayer.state) { slide.VKPlayer = VK.VideoPlayer(vk); slide.VKPlayer.on('inited', () => { - slide.VKPlayer.play(); + if (slide.classList.contains('swiper-slide-active')) { + slide.VKPlayer.play(); + } }); } else { GalleryVKPlayer.addListener(() => { @@ -71,13 +79,15 @@ const playVideo = (slide) => { if (window.GalleryRTPlayer) { if (window.GalleryRTPlayer.has(videoId)) { clearInterval(checkInterval); - rt.contentWindow.postMessage( - JSON.stringify({ - type: 'player:play', - data: {}, - }), - '*', - ); + if (slide.classList.contains('swiper-slide-active')) { + rt.contentWindow.postMessage( + JSON.stringify({ + type: 'player:play', + data: {}, + }), + '*', + ); + } } } else { clearInterval(checkInterval); @@ -338,11 +348,14 @@ const init = async (items = [], options = {}, index = 0) => { }); swiper.on('slideChange', function () { - if (this.slides[this.previousIndex].classList.contains('advdominion-lg__item_video')) { - pauseVideo(this.slides[this.previousIndex]); - } - if (this.slides[this.activeIndex].classList.contains('advdominion-lg__item_video')) { - playVideo(this.slides[this.activeIndex]); + for (const [index, slide] of Object.entries(this.slides)) { + if (slide.classList.contains('advdominion-lg__item_video')) { + if (Number(index) === this.activeIndex) { + playVideo(slide); + } else { + pauseVideo(slide); + } + } } });