我有一個類AudioClass
在JavaScript中播放音頻如下:(僞代碼)HTML5音頻有時不能加載
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。如何解決這個問題?
FWIW:'Audio'是本地HTML5音頻對象的名稱。對於您的自定義對象,選擇其他名稱是有意義的。 –
你不等待音頻加載,創建一個回調來播放它時,它完成加載 –
@Marat Tanalin我沒有完全使用「音頻」。這是一個僞代碼。 –