我已经可以检查音频何时结束,然后用它做我想做的事情。但是,如何检测音频何时即将结束?假设音频结束前仅剩200毫秒。我已经做了一个小功能来获取当前音频的毫秒数,但似乎无法弄清楚逻辑部分。代码是:
audio.play();
function detectEnd() {
var Mins = Math.floor(audio.currentTime / 60),
Secs = audio.currentTime - Mins * 60,
MilliSecs = Math.round(Secs * 1000);
if( /* the audio is about to end (200 ms remaining) */ )
alert("The audio is about to end...");
}
audio.addEventListener('timeupdate', detectEnd, false);
有可能吗?
答案 0 :(得分:1)
好的,所以:
您已经有了audio.currentTime
,现在需要一个audio.duration
的音频总长度变量。
然后,如果audio.currentTime ==(audio.duration-x)触发事件。
在此示例中,x
代表您希望的剩余时间。请注意,audio.duration
以秒为单位。
希望有帮助
答案 1 :(得分:1)
当然有可能!
audio.play();
var count = 0;
function detectEnd() {
if (audio.duration - audio.currentTime <= 0.2) {
if (!count) {
alert("The audio is about to end...");
} else {}
count++;
}
}
audio.addEventListener('timeupdate', detectEnd, false);
audio.onended = function() {
count = 0; // RESET
};
PS:我添加了一个变量count
来一次显示警报。
REF URL:https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_av_event_timeupdate