Задать вопрос
evve
@evve

Как запретить одновременное нескольких воспроизведение видео на одной странице?

Доброго времени суток!
На одной странице есть несколько видео, которые добавлены через тег video html5. Как запретить одновременное воспроизведение?
Правильнее наверное сделать так: Когда пользователь нажимает на воспроизведение другого ролика, первый останавливается.
  • Вопрос задан
  • 529 просмотров
Подписаться 1 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Профессиональная вёрстка на HTML и CSS
    3 месяца
    Далее
  • Stepik
    Основы HTML и CSS
    2 недели
    Далее
  • OTUS
    HTML/CSS
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg
Есть событие клика по кнопке плей, по нему останавливаете все видео и запускаете нужный.
Ответ написан
Комментировать
@antonmoshkin
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

$("iframe").each(function(indx){
 var min = $(this)[0].src.indexOf('?');
 var src = $(this)[0].src.substr(0, min) + '?enablejsapi=1';
 $(this)[0].src = src;
 $(this)[0].id = 'player' + indx;
});

function onPlayerStateChange(event) {
 var flag = 0;
 $(players).each(function(){
  if(this.getPlayerState() == 1){
   flag += 1;
  }
 });
 if(event.data == 1 && flag > 1){
  stop_all();
  event.target.playVideo();
 }
}

function stop_all (){
 $(players).each(function(){
  this.pauseVideo();
 });
}

var players = [];
function onYouTubeIframeAPIReady() {
$("iframe").each(function(indx){
 var temp = new YT.Player('player' + indx, {
  events: {
   'onStateChange': onPlayerStateChange
  }
 });
 players.push(temp);
});
}

не забудьте подключить jQuery
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы