2013-12-17 91 views
0

我正在使用「video.js」,並寫了一些JavaScript讓其他正在播放的視頻停止,如果另一個被點擊並播放。這適用於使用HTML5標記的IE9 +,Chrome,Safari和其他現代瀏覽器。視頻JS和SWF點擊事件

我的問題在於,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元素的click事件。雖然,點擊div時,視頻仍然停止播放,但我不確定爲什麼點擊事件不會觸發...

控件和大型播放按鈕仍然有效,並觸發點擊事件以上...

+0

不是直接回答你的問題,但它可能是更好地使用每個玩家的'play'事件代替,讓你拍攝的戲劇但是他們正在啓動。 – misterben

+0

@misterben,感謝您的建議,我從來沒有關於使用Player類「play」事件。但是......我如何檢查某個視頻是否是播放的視頻? – lislis

回答

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

+0

感謝您提供清晰簡潔的幫助。不勝感激。 – lislis