Donc, j'ai utilisé un auditeur sur
document.getElementById("video").buffered.length
pour voir s'il est supérieur à 0
pour le chargement ou non d'une vidéo. Cela fonctionne pour une très petite vidéo, et uniquement dans Google Chrome. Cela ne fonctionne pas du tout dans Firefox. Des idées pour savoir comment faire fonctionner cela?
Je veux essentiellement attendre que 3 vidéos séparées soient chargées pour effectuer une action spécifique, comment puis-je procéder?
Essaye ça:
var video = document.getElementById("video-id-name");
if ( video.readyState === 4 ) {
// it's loaded
}
Lire ici: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState
Je trouve que l’utilisation de setInterval
convient pour une écoute active du moment où la readyState
de la vidéo change en vérifiant chaque demi-seconde jusqu’à ce qu’elle soit chargée.
checkforVideo();
function checkforVideo() {
var b = setInterval(()=>{
if(VideoElement.readyState >= 3){
\\do whatever you want done here
\\you can now stop checking every half second
clearInterval(b);
}
},500);
}
Si vous n'utilisez pas ES6, remplacez simplement () =>
par function()
Pour en faire un auditeur, dans des circonstances normales, vous souhaiterez écouter l'événement de suspension. Il est déclenché lorsque le téléchargement est suspendu ou arrêté pour une raison quelconque, y compris s'il est terminé.
Vous aurez également envie d'écouter jouer pour les cas où le contenu est déjà chargé (comme, du cache)
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");
}
});
Source: https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events
var video = document.getElementById("video");
video.onloadeddata = function() {
// video is loaded
}