2011-12-30 4 views
19

にロードされているかいないかどうかを判定し、私はそれは時にビデオのロードされたかどうかのために0より大きいだかどうかを確認するためにビデオだからJavascriptを

document.getElementById("video").buffered.length 

上のリスナーを使用してきました。これは非常に小さな動画で、Google Chromeでのみ動作します。 Firefoxではまったく動作しません。どのようにこれを動作させるための任意のアイデアですか?

私は本質的に3つの別個のビデオが特定のアクションをとるために読み込まれるまで待つことを望んでいますが、どうすればこのことを知ることができますか?

答えて

32

これを試してみてください:

var video = document.getElementById("video-id-name"); 

if (video.readyState === 4) { 
    // it's loaded 
} 

ここで読む:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState

+0

どのブラウザがそのプロパティをサポートしていますか? –

+0

@JaredFarrishこの[Wiki](http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28HTML5_Media%29)によると、サポートは完了です(WebKitの列は空ですが、実装が遅れていると私は驚くでしょう) Mozillaの/ Operaの)。 –

+1

>が1を超えると、それはちょうど探している場合のトリックを行う可能性があります。 – Costa

2

は、通常の状況下では、リスナーにこれを行うには、中断イベントを聞きたいと思うでしょう。これは、ダウンロードが一時停止されたときや何らかの理由で停止したときにトリガーされます。

ます。また、コンテンツがすでに(キャッシュから、のような)ロードされたときに例のために演奏に耳を傾けたいと思う

video.addEventListener("playing", function() { 
    console.log("[Playing] loading of video"); 
    if (video.readyState == 4) { 
     console.log("[Finished] loading of video"); 
    } 
}); 
video.addEventListener("suspend", function(e) { 
    console.log("[Suspended] loading of video"); 
    if (video.readyState == 4) { 
     console.log("[Finished] loading of video"); 
    } 
}); 

出典:https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events

0

私はのsetIntervalが積極的に聴くために働く使用して見つけますときににロードされるまで1/2秒ごとにチェックすることで、映像の変化のreadyState

checkforVideo(); 

function checkforVideo() { 
    var b = setInterval(()=>{ 
     if(VideoElement.readyState >= 3){ 

      \\do whatever you want done here 

      \\you can now clearInterval (stop checking every half second) 
      clearInterval(b); 
     }     
    },500); 
} 

あなたがいない場合はUSI ES6はちょうど() =>と置き換えますfunction()

関連する問題