Более корректное воспроизведение видео при быстром пролистывании
This commit is contained in:
		
							
								
								
									
										45
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								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);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user