2016-09-20 15 views
0

ビデオを再生するポイントまでスクロールしてからもう一度再生しないと、ビデオを再生しようとしています。HTML5ビデオをスクロールして再生し、完了するまで再生して一度だけ再生する

私はそれをしたいです1)彼らは一度スクロールして再生を開始する2.)再生を開始すると完了するまでビデオを再生し、3.)一度だけ再生してポスター画像にフォールバックします。どのようにjQueryでこれを行うことができますか?

https://jsfiddle.net/tca0nyqs/ - このフィドルでは、ユーザーがスクロールするたびに再開します。

HTML

<video id="about-video" preload="auto" poster="images/about-default.png"> 
<source src="images/about-work.mp4" type="video/mp4"> 
</video> 

jQueryの

$(document).ready(function() { 
    // Get media - with autoplay disabled (audio or video) 
    var media = $('#about-video').not("[autoplay='autoplay']"); 
    var tolerancePixel = 300; 
    function checkMedia(){ 
     // Get current browser top and bottom 
     var scrollTop = $(window).scrollTop() + tolerancePixel; 
     var scrollBottom = $(window).scrollTop() + $(window).height() - tolerancePixel; 
     media.each(function(index, el) { 
      var yTopMedia = $(this).offset().top; 
      var yBottomMedia = $(this).height() + yTopMedia; 
      if(scrollTop < yBottomMedia && scrollBottom > yTopMedia){ //view explaination in `In brief` section above 
       $(this).get(0).play(); 
      } else { 
       $(this).get(0).pause(); 
      } 
      }); 
     //} 
     } 
     $(document).on('scroll', checkMedia); 
    }); 

私は何とかビデオが一度再生されたかどうかを確認するためにこれを使用する必要がありますか?

$('#about-video').on('ended',function(){ 
    // code 
    }); 
+0

loop属性を使用してください。 – Chetan

+0

@Chetan私は質問を編集しましたが、ループを作成しようとしていません。私はそれが完了するまで一度だけ再生することを望みます(たとえユーザーが過去をスクロールしても見えなくなったとしても)。 – evan

+0

更新:私はここで重複した/働く答えを見つけたと信じています:http://stackoverflow.com/a/33116544/2084793 – evan

答えて

1

オンビデオ終了イベントmake src null Fiddle

$('#about-video').on('ended',function(){ 
    $(this).attr('src',''); 
    }); 
関連する問題