Дополнительный контейнер div нарушает функцию воспроизведения видео html5

#javascript #html5-video #slick.js

#javascript #html5-video #slick.js

Вопрос:

Я только что создал пример для гладкой карусели с видео html5: https://codepen.io/anon/pen/PLvreP

На первом слайде видео запускается автоматически. На втором слайде есть дополнительный контейнер div, обертывающий видео-тег, и там автозапуск больше не работает.

Что я должен сделать, чтобы это работало, даже если внутри есть дополнительный контейнер?

Спасибо за вашу поддержку! L

Это пример второй HTML-разметки, которая не работает:

 <div class="item video">
    <div>
      <video class="slide-video slide-media" loop muted preload="metadata" poster="https://drive.google.com/uc?export=viewamp;id=0B_koKn2rKOkLSXZCakVGZWhOV00">
        <source src="https://player.vimeo.com/external/138504815.sd.mp4?s=8a71ff38f08ec81efe50d35915afd426765a7526amp;profile_id=112" type="video/mp4" />
      </video>
      <p class="caption">HTML 5 Video</p>
    </div>
  </div>
  

Комментарии:

1. Спасибо, нет, это не так. Это связано с этим видео: player.vimeo.com/external /…

Ответ №1:

Добавляя дополнительный div, вы нарушаете код, который выбирает видео для воспроизведения. В вашей playPauseVideo функции :

 video = currentSlide.children("video").get(0);
  

Теперь больше нет дочерних элементов с тегом «video», поскольку ваше видео теперь является внуком currentSlide div.

Адаптируйте способ выбора этого видеоэлемента, и это должно исправить

 video = currentSlide.children("div").children("video").get(0);
  

или

 video = currentSlide.find("video").get(0);
  

Обновлен codepen

ОТРЕДАКТИРУЙТЕ свой последний комментарий :

К сожалению, на моем веб-сайте это никак не влияет и ошибок не отображается. Как я могу узнать, где может быть ошибка? Существует ли способ отправки журналов на консоль? Я уже много часов ищу

Дело в том, что вы выбираете свое видео и перед вызовом play / pause проверяете, имеет ли оно значение null :

 video = currentSlide.children("video").get(0);
if (video != null) {
  if (control === "play"){
    video.play();
  } else {
    video.pause();
  }
} 
  

Итак, если вы хотите зарегистрировать ошибку, вы могли бы добавить else блок и использовать console.error()

 if (video != null) {
  if (control === "play"){
    video.play();
  } else {
    video.pause();
  }
} else {
   console.error("The video was not found");
}
  

Комментарии:

1. Большое вам спасибо! Я просто вижу, что в настоящее время это работает с codepen. К сожалению, на моем веб-сайте это никак не влияет и ошибок не отображается. Как я могу узнать, где может быть ошибка? Существует ли способ отправки журналов на консоль? Я уже много часов ищу.

2. @Luke Я ответил на ваши вопросы в своей правке. Проверьте это.

3. Большое вам спасибо. Видео находится там. Когда я щелкаю правой кнопкой мыши, я могу нажать play, и он воспроизводится. Функция воспроизведения почему-то не запускается. Могу ли я проверить, не найден ли элемент video с помощью селектора?

4. Я только что узнал, в чем была проблема. Этот селектор работает, только если класс находится на втором месте. Если перед ним находится более одного класса, он не выбран. slideType = currentSlide.attr(«класс»).split(«»)[1];