だから、私は上のリスナーを使用しています
document.getElementById("video").buffered.length
動画が読み込まれたかどうかの0
より大きいかどうかを確認します。これは非常に小さなビデオで機能し、Google Chromeでのみ機能します。 Firefoxではまったく機能しません。これを機能させる方法についてのアイデアはありますか?
基本的に、3つの個別のビデオがロードされて特定のアクションを実行するまで待機したいのですが、どうすればよいですか?
これを試して:
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
setInterval
を使用すると、ビデオのreadyState
が変化するとき、ロードするまで0.5秒ごとにチェックすることでアクティブにリッスンすることができます。
_checkforVideo();
function checkforVideo() {
//Every 500ms, check if the video element has loaded
var b = setInterval(()=>{
if(VideoElement.readyState >= 3){
//This block of code is triggered when the video is loaded
//your code goes here
//stop checking every half second
clearInterval(b);
}
},500);
}
_
ES6を使用していない場合は、_() =>
_をfunction()
に置き換えるだけです
これをリスナーにするために、通常の状況では、サスペンドイベントをリッスンする必要があります。ダウンロードが完了したなど、何らかの理由でダウンロードが一時停止または停止したときにトリガーされます。
また、コンテンツが既にロードされている場合(キャッシュからなど)の再生を聞くこともできます。
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
var video = document.getElementById("video");
video.onloadeddata = function() {
// video is loaded
}