2017-03-03 10 views
0

ループで再生されるビデオを持つプロジェクトがあります。私はビデオが遅延した後、一時停止したい、と私は、この使用してJavaScriptを実装しようとしていますビデオはJavascriptを使って一時停止しません

<video playsinline autoplay muted loop id="myVid"> 
     <source src="River.mp4" type="video/mp4"> 
    </video> 

:ここではvideoタグ用のHTMLです。私のjavascriptのコード:

function stopVideo() { 

    var vid = document.getElementById('myVid'); 
    vid.pause(); 

    } 

setTimeout(stopVideo, 900); 

これが機能していません。なぜどんなアイデア?ありがとうございました。

---------------------------------------------- ----------------- EDIT -------------------------------- ------------------------------

エラーコンソールでエラーメッセージが表示されます:

TypeError: null is not an object (evaluating 'vid.pause') 
+0

はい。これはここのタイプミスです。私はそれを修正します。 – Paul

+1

nullは要素が見つからないことを意味し、DOMが構築される前にスクリプトが実行されていることを示します(つまりheadタグ内)。回答が更新されました。 – K3N

答えて

0

私はこのような何かをしようとするだろう:それは正常に動作しています

setTimeout(function() {stopVideo()}, 900); 
2

更新:(。つまり、headタグで)

nullは、要素がDOMが構築される前に、スクリプトが実行されていることを示し、getElementById()によって発見されていないことを意味します。

は、単に頭の中であれば、このようなスクリプトコードを実行します。

window.onload = function() { 
    // code goes here 
}; 

以上のスクリプトタグを体の近くタグの前に文書の最後に。

旧答え -

タイムアウトを設定する前に、映像が実際に再生されていることを確認してください。 900ms(0.9s)の短い遅延で、ビデオが再生を開始する前にタイムアウトコードがトリガーされる危険性があります。

は、ビデオは実際にあなたがそのような playingtimeupdateなどのイベントを使用することができます再生していることを確認しますが、 timeupdateでそう一方通行の周りに、このシナリオのための正確でない可能性があるだけでトリガすることですとき playing

var vid = document.getElementById('myVid'); 
 
var reqId; // optional, prevents running more than one time 
 

 
vid.addEventListener("playing", function() { 
 
    if (!reqId) reqId = setTimeout(stopVideo.bind(this), 2000); 
 
}); 
 

 
function stopVideo() { 
 
    this.pause(); 
 
}
video {height:200px}
<video playsinline autoplay muted loop id="myVid"> 
 
    <source src="//media.w3.org/2010/05/sintel/trailer.mp4" type="video/mp4"> 
 
</video>

関連する問題