如何在数据可用时执行音频持续时间警报?

How to execute alert of the audio duration when data is available?

None 这些技巧对我有用...

var audio=new Audio("sample.mp3");

audio.addEventListener('onreadystatechange',function({alert(audio.duration);});
if(audio.readyState===4){alert(audio.duration);}
audio.onreadystatechange=function(){alert(audio.duration);};

我想在该数据可用时(audio.readyState===4 时)执行音频持续时间警报。好吧...除非有另一种魔法可以尽快获取此数据(不使用 settimeout 或 setInterval)

您添加了两次事件处理程序,if 需要在里面

var audio=new Audio("sample.mp3");
audio.onreadystatechange=function(){
  if(audio.readyState===4){     
    alert(audio.duration);
  }
}

试试这个:

audio.addEventListener('canplaythrough', function() { 
   alert(audio.duration);
}, false);

试试这个:

var audio=new Audio("sample.mp3");

audio.addEventListener('onreadystatechange',alertAudio;);

function alertAudio(){
if(audio.readyState===4){
 alert(audio.duration);}
 }

为什么不使用 oncanplay 事件?类似于:

var audio=new Audio("sample.mp3");

audio.oncanplay = function(){ alert(audio.duration); };

oncanplay 事件在信息足够且音频准备好开始播放时触发。