我认为我在JavaScript Audio API上发现了一个错误。
我的代码完全像:
var audio=new Audio();
var lastPause;
var myPlayer=document.querySelector('#player>.button.hand');
var playerStatus=("textContent" in document)?"textContent":"innerText";
myPlayer.addEventListener
(
'click',
function()
{
if(audio.paused)
{
audio.src="Nadav Guedj - Golden Boy (Eurovision 2015 - Israel - Karaoke).mp3";
myPlayer.innerHTML="►";
if(lastPause)
{
alert(lastPause); //If I remove this line it's not working when lastPause is defined!
audio.currentTime=lastPause;
}
audio.play();
}
else
{
myPlayer.innerHTML="||";
lastPause=audio.currentTime;
audio.pause();
}
}
);
BUT
如果我删除或注释提示行alert(lastPause);
,则在定义lastPause
时音频卡住或低于... ...第二次用户按下播放(暂停后)。
答案 0 :(得分:2)
我假设这个问题与this question有关,我的答案也适用于此,
重复设置audio.src
是您的问题。你有两种解决方法:
audio.src
行,也可以用它删除一堆其他冗余代码。当你使用警报时它起作用的原因是,当触发警报时,接下来的几行不会执行,直到你解雇它,在这几秒钟/毫秒内,音源元素的来源已被改变了有足够的时间加载新元数据,只有这样才能设置当前时间。所以你可以修改代码来触发元数据加载时音频的设置:
...
myPlayer.innerHTML="►";
audio.play();
audio.onloadedmetadata = function(){
if(lastPause){
audio.currentTime = lastPause;
}
};