1

それらのトリックはどれも私にはうまくいきません...

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を使用せずに)

4

4 に答える 4

3

なぜoncanplayイベントを使用しないのですか? 何かのようなもの:

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

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

十分な情報が得られ、オーディオのoncanplay再生を開始する準備が整うと、イベントが発生します。

于 2015-04-29T20:14:16.363 に答える
2

これを試して:

audio.addEventListener('canplaythrough', function() { 
   alert(audio.duration);
}, false);
于 2015-04-29T20:09:20.323 に答える
1

イベント ハンドラを 2 回追加しており、if を内部に配置する必要があります

var audio=new Audio("sample.mp3");
audio.onreadystatechange=function(){
  if(audio.readyState===4){     
    alert(audio.duration);
  }
}
于 2015-04-29T20:08:48.003 に答える