如何在换幻灯片时暂停 youtube 视频?

How to pause youtube video on slide change?

我正在尝试在使用 swiper from iDangerous

更改幻灯片时暂停 YouTube 视频

我有以 enablejsapi=1 结尾的 YouTube 视频网址,这里是一些代码,重要的部分是 slideChange:

var swiper_video = new Swiper('.swiper-video', {

    loop: true,
    autoplay: false,
    pagination: {
      el: '.swiper-pagination',
    },
    navigation: {
      nextEl: '.swiper-button-next.video-swiper',
      prevEl: '.swiper-button-prev.video-swiper',
    },
    slideChange: function (el) {
      console.log('1');
      $('.swiper-slide').each(function () {
        var youtubePlayer = $(this).find('iframe').get(0);
        if (youtubePlayer) {
          youtubePlayer.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
        }
      });
    },
  });

似乎无法触发事件,但我认为其余代码应该可以工作。

您的活动似乎声明不正确,应该在 on:{} 内,类似于:

var swiper_video = new Swiper('.swiper-video', {
  on: {
    slideChange: function () {
      console.log('Hello World') 
    },
  }
});

因此使用您的完整代码:

var swiper_video = new Swiper('.swiper-video', {
  loop: true,
  autoplay: false,
  pagination: {
    el: '.swiper-pagination',
  },
  navigation: {
    nextEl: '.swiper-button-next.video-swiper',
    prevEl: '.swiper-button-prev.video-swiper',
  },
  on: {
    slideChange: function (el) {
      console.log('1');
      $('.swiper-slide').each(function () {
        var youtubePlayer = $(this).find('iframe').get(0);
        if (youtubePlayer) {
            youtubePlayer.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
        }
      });
    },
  },
});

查看 API docs for events here, or a working example here