Calling end
phương pháp trên buffered
mà không kiểm tra là không đáng tin cậy. Có thể bạn đang cố gắng gọi phương thức trên không có gì. Kiểm tra fiddle này:
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>
Thấy không? Vào lúc bắt đầu đầu tiên, độ dài đệm là 0 - không có gì được tải. Bạn cần phải chắc chắn rằng độ dài đệm không phải là 0 trước khi gọi phương thức start
hoặc end
.
Mỗi khi bạn đọc buffered
, nó thực sự là cố định. Vì vậy, để đạt được hiệu ứng "tải" trực quan, bạn cần phải đọc nó một lần nữa và một lần nữa và một lần nữa.
Ở đây tôi cố gắng cập nhật tỷ lệ tải và chơi mỗi 50 phần nghìn giây:
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>
LƯU Ý: Các tập tin MP3 có thể không thể truy cập tại chỗ của bạn. Nếu đó là trường hợp, chỉ cần thử một nguồn khác có lợi cho bạn. Nếu không, bạn sẽ nghe thấy một giọng nữ rất đẹp, và thấy tỷ lệ phần trăm thay đổi liên tục, cuối cùng kết thúc lên 100%.
Chỉ cần làm rõ, cáC# myProgressBar' yếu tố 'được giả định là một' 'yếu tố, trong đó có một thuộc tính 'value'. – hawkharris