Wywołanie end
sposób na buffered
bez sprawdzania jest zawodna. Możliwe, że próbujesz wywołać metodę na niczym. Sprawdź ten skrzypce:
document.querySelector('span').innerHTML = document.querySelector('audio').buffered.length;
<audio src="http://myst729.qiniudn.com/within-temptation_pale.mp3" controls autoplay></audio>
<p>Buffered Length: <span></span></p>
zobaczyć? Na samym początku buforowana długość wynosi 0 - nic nie zostało załadowane. Musisz mieć pewność, że długość buforowana nie wynosi 0, zanim zadzwonisz pod metodę start
lub end
.
Za każdym razem, gdy czytasz buffered
, jest to naprawione. Aby uzyskać wizualnie "ładujący" efekt, trzeba go czytać raz za razem.
Tutaj staram się aktualizować załadowanego i grał procentowego co 50 milisekund:
var audio = document.querySelector('audio');
var percentages = document.querySelectorAll('span');
function loop() {
var buffered = audio.buffered;
var loaded;
var played;
if (buffered.length) {
loaded = 100 * buffered.end(0)/audio.duration;
played = 100 * audio.currentTime/audio.duration;
percentages[0].innerHTML = loaded.toFixed(2);
percentages[1].innerHTML = played.toFixed(2);
}
setTimeout(loop, 50);
}
loop();
<audio src="http://myst729.qiniudn.com/within-temptation_pale.mp3" controls autoplay></audio>
<p>Loaded: <span></span>%</p>
<p>Played: <span></span>%</p>
UWAGA: plik MP3 może nie być dostępna w miejscu. Jeśli tak jest, po prostu spróbuj innego źródła na twoją korzyść. W przeciwnym razie usłyszysz bardzo przyjemny kobiecy wokal i zobaczysz zmiany procentowe w sposób ciągły, ostatecznie skończysz w 100%.
Właśnie w celu wyjaśnienia, Znak '# elementem myProgressBar' Zakłada się' ' elementem, który ma własność 'value'. – hawkharris