Подтвердить что ты не робот

Скажите, загружено ли видео или нет в Javascript

Итак, я использовал прослушиватель

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

чтобы увидеть, превышает ли это значение 0 при загрузке видео или нет. Это работает для очень маленького видео и только в Google Chrome. Он вообще не работает в Firefox. Любые идеи о том, как заставить это работать?

Я действительно хочу подождать, пока загрузится 3 отдельных видеоролика, чтобы принять конкретное действие, как я могу это сделать?

4b9b3361

Ответ 2

Я считаю, что использование setInterval работает для активного прослушивания, когда состояние readyState видео изменяется, проверяя каждую полсекунду, пока оно не загрузится.

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()

Ответ 3

Чтобы сделать это в слушателе, при обычных обстоятельствах вы захотите прослушать событие suspend. Это срабатывает, когда загрузка приостановлена ​​или остановлена ​​по какой-либо причине, включая ее завершение.

Вы также захотите прослушать воспроизведение для случаев, когда контент уже загружен (например, из кеша)

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

Ответ 4

var video = document.getElementById("video");
video.onloadeddata = function() {
    // video is loaded
}