Более корректное воспроизведение видео при быстром пролистывании

This commit is contained in:
Valentin Silytuin 2025-04-24 23:32:07 +04:00
parent 4477563c66
commit 51abd182a2
1 changed files with 29 additions and 16 deletions

View File

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