Перезапустите Vimeo iFrame с помощью Froogaloop JavaScript и jQuery

Моя страница динамически запускает одно из нескольких встроенных видео Vimeo iFrame, и я использую jQuery для их постепенного появления / исчезновения и запуска / остановки. Прямо сейчас моя функция закрытия скрывает видео, а затем приостанавливает его. Если вы открываете то же видео после того, как оно было скрыто, оно начинается с того места, где оно было приостановлено ранее. Я бы хотел перезапустить. Я не могу придумать правильное действие. В некоторых случаях «стоп» и «перезапуск» не являются вариантами (насколько это нелогично? Воспроизведение / пауза / остановка).

Я связываюсь с версией Froogaloop JS, размещенной на Vimeo, и использую jQuery для вызова функций.

Спасибо!

JavaScript:

$('#close, #underlay').click(function() {
    $('.vim, #close, #container, #underlay').fadeOut(400);
    var player=$f($('.vid:visible')[0]);
    player.api('pause');
});

person technopeasant    schedule 10.04.2011    source источник


Ответы (3)


Когда он появится, вы можете перейти к началу видео следующим образом:

player.api("seekTo", 0);
player.play();
person Shaz    schedule 10.04.2011
comment
работает отлично. vimeo какой-то дряблый, с которым ключевой кадр считается 0, но это неизбежно. Я упростил ваш код до player.api (seekTo, 0) .api ('play'); - person technopeasant; 10.04.2011

Для полного перезапуска мне нравится

player.api('unload')

person erdostom    schedule 28.03.2016

Я предпочитаю постоянно сбрасывать все видео, а затем приостанавливать их. Затем воспроизведите текущее отображаемое видео.

Приведенный ниже код можно оптимизировать, но он выполняет свою работу без реальных недостатков.

   function playCurrentVidPWA() {
      let allVids = document.getElementsByClassName('vimeo-player');
      let currentVideo = mySwiper.slides[mySwiper.activeIndex].querySelector('iframe');
   
      // Pause all videos
      if (allVids)
      {
         for (let i = 0; i < allVids.length; i++)
         {
            const iVid = allVids[i]
            let player = new Vimeo.Player(iVid);
            // Set the time of the video back to the begining
            player.setCurrentTime(0)
            // Pause the video for no frame-skip animations
            player.pause()
         }
      }
      // Play current slide video
      if(currentVideo)
      {
         let player = new Vimeo.Player(currentVideo);
         player.play()
      }
   }
person T.Woody    schedule 01.10.2020