以下のようにオーディオを再生するためのjavascriptのクラスがありAudioClass
ます:(疑似コード)
var AudioClass = function() {
this.audioElement;
.
.
.
this.load = function(audioSource) {
this.audioElement = //create Audio, set source etc.
this.audioElement.addEventListener("loadedmetadata", function(){
//some code
});
}
this.play = function(from, to) {
if(isNaN(this.audioElement.duration)) { return; } //line 1
this.audioElement.currentTime = from/1000; //line 2 //from & to in milliseconds
setTimeout(function() {
//pause audio.
}, to-from);
}
}
そして、私は以下のように使用してAudio
います:
/* the below lines are executed on document load. (playing background music) */
var audioInstance = new AudioClass();
audioInstance.load(audioSrc);
audioInstance.play(20000); //line 3 //20 seconds
/* the below line is used at other places whenever i need sound */
audioInstance.play(40000); //40 seconds
「3行目」でオーディオを再生しようとすると、それまでにオーディオがロードされないことがあるため、スローされINVALID_STATE_ERR. DOM EXCEPTION 11 at line 2
ます。音声の長さを確認すると、 でしたNaN
。そこで、デュレーションかどうかをチェックする「1行目」を追加して、オーディオがロードされるまでisNaN()
設定しようとしないようにしました。currentTime
ここでの問題は、オーディオの長さが常に NaN になる場合があることです。これを修正する方法は?