Событие щелчка видео JS и SWF

Я использую video.js и написал несколько Javascript, чтобы другие видео останавливались, если щелкнуть и воспроизвести другое. Это хорошо работает в IE9 +, Chrome, Safari и других современных браузерах, которые используют тег HTML5 <video>.

Моя проблема заключается в IE8 и резервном варианте SWF / Flash. Событие щелчка, похоже, не срабатывает, когда на него щелкают.

 $('div.video-js').on('click', function() {
    var $this     = $(this),
        player    = videojs($this[0]);
        thisVideo = $this.children('object'); //get <object> for IE8 vs <video>

    /* 
      If videoj.js API is ready then...
      call the stop videos, and exception is the one that is clicked
    */
    player.ready(function() {
      if(player.paused() === false) { 
        //stopVideos(thisVideo[0]); 
      }
    });

  });

SWF, кажется, поглощает события щелчка, которые предназначены для содержащего div.video-js элемента. Хотя при нажатии на div видео по-прежнему останавливается и воспроизводится, но я не уверен, почему событие щелчка не запускается ...

Элементы управления и кнопка большого воспроизведения по-прежнему работают и запускают событие click выше ...


person lislis    schedule 17.12.2013    source источник
comment
Это не прямой ответ на ваш вопрос, но, возможно, было бы лучше использовать событие play каждого игрока, чтобы вы записывали игры, независимо от того, инициированы они.   -  person misterben    schedule 18.12.2013
comment
@misterben, спасибо за предложение, я никогда не думал об использовании события Player class play. Но ... как мне проверить, было ли воспроизведено именно это видео?   -  person lislis    schedule 19.12.2013


Ответы (1)


Вы можете использовать событие play, чтобы остановить других игроков. Поскольку вы используете jQuery, вы можете использовать not() для выбора всех игроков, кроме того, который инициировал событие.

$(".video-js").each(function() {
  var id = this.id;
  videojs(id).ready(function() {
    this.on('play', function() {
      $(".video-js").not("#" + id).each(function() {
        videojs(this.id).pause(true);
      });
    });
  });
}); 

Пример: http://jsbin.com/OcuXOCe/2/edit?html,output

person misterben    schedule 20.12.2013
comment
спасибо за ясную и лаконичную помощь. Очень ценится. - person lislis; 20.12.2013