Bootstrap カルーセルに埋め込まれた YouTube ビデオがいくつかあります。デフォルトではカルーセルは自動的に進みますが、ビデオの再生中に一時停止したいと考えています。
ビデオの再生中を検出するトリックはありますか? 可能であれば、YouTube API を使用せずに実行したいと考えています (各カルーセルには任意の数の動画があり、すべての動画のインスタンスを作成したくありません)。
編集:最終デザイン
ビデオにオーバーラップを作成しました。
.video_mask{
position:absolute;
top:0;
left:0;
width:100%;
height:275px;
z-index:25;
opacity:0;
}
マスクをクリックすると、対応する iframe が自動再生に設定され、マスクが非表示になり、カルーセルが一時停止します。
$('.video_mask').click(function(){
iframe = $(this).closest('.item').find('iframe');
iframe_source = iframe.attr('src');
iframe_source = iframe_source + "?autoplay=1"
iframe.attr('src', iframe_source);
// hide the mask
$(this).toggle();
// stop the slideshow
$('.projectOverviewCarousel').carousel('pause');
});
ユーザーがカルーセル コントロールをクリックすると、すべてのマスクと iframe URL がリセットされます。
$('.projectOverviewCarousel').on('slide', function(){
var iframeID = getID($(this).find('iframe').attr("id"));
// stop iframe from playing
if(iframeID != undefined){
callPlayer(iframeID, 'stopVideo');
}
// turn on all masks
$('.video_mask').show();
// reset src of all videos
$('.projectOverviewCarousel').find('iframe').each(function(key, value){
url = $(this).attr('src');
if(url.indexOf("autoplay")>0){
new_url = url.substring(0, url.indexOf("?"));
$(this).attr('src', new_url);
}
});
確認すべき点: ブートストラップ カルーセルのコントロールの z-index がマスクよりも大きいことを確認します (ユーザーがスライドショーを手動で進められるようにするため)。
これが他の誰かに役立つことを願っています!