如何在幻灯片更改时暂停 YouTube 视频?

Ada*_*dam 2 javascript youtube video carousel swiper.js

当幻灯片更改时,我尝试使用iDangerous 中的 swiper暂停 YouTube 视频

我的 YouTube 视频网址以结尾enablejsapi=1,这里是一些代码,重要的部分是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":""}', '*');
        }
      });
    },
  });
Run Code Online (Sandbox Code Playgroud)

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

Bre*_*son 7

您的事件看起来声明不正确,应该在 inside on:{},类似:

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

所以用你的完整代码:

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":""}', '*');
        }
      });
    },
  },
});
Run Code Online (Sandbox Code Playgroud)

在此处查看事件的 API 文档,或在此处查看工作示例