2013-01-23 88 views
0

我有許多按鈕播放許多不同的聲音 - 每個按鈕播放不同的MP3時點擊。示例代碼:點擊播放MP3的一部分

<a onclick="this.firstChild.play()"><audio src="1.mp3" ></audio>1</a> 

對於我試圖從同一個MP3文件播放的所有不同的聲音的移動設備,所以我可以預載1個文件,並有更多的即時體驗。

所以我需要設置單擊時播放的mp3的起點和終點。

我該如何使用音頻html5或javascript?在短短的鍍鉻工作就足夠了...

回答

0

我還沒有測試此代碼,但這應該工作:

<a id="audioTag1"><audio src="1.mp3" ></audio>1</a> 
var canPlay = false; 
var audio = document.getElementsByTagName('audio')[0]; 

document.getElementById('audioTag1').addEventListener('click', function(){ 
    playAudio(15); 
}); 

audio.addEventListener('canplay', function() { // listen for the `canplay`event, to make sure the file is loaded. 
    canPlay = true; // Set a boolean to "true" once the audio has loaded. 
}); 

function playAudio(time){ 
    audio.currentTime = time; // jump to 15 secs into the file 
    audio.play(); // I'm not certain if this line is necessary. 
} 

確保您在onload事件偵聽器運行JS代碼,因此音頻標籤在代碼執行時加載。

+0

林不知道我收到你最後的評論。進出硬盤,所以不應該有延遲加載。但運行腳本乾淨我得到錯誤 - 音頻未定義 - audio.currentTime =時間;如果我把代碼放在if(document.readyState ===「complete」){init(); var ...}我玩playAudio沒有定義 - playAudio(15)。不知道如何或什麼。謝謝 – Jon

+0

@Jon:我對代碼做了一個小修改,試着在你的'readyState'代碼中運行這個代碼。 – Cerbrus

+0

我不得不改變getElementById(w/o s) - 準備好的聽衆沒有錯誤也沒有聲音。無監聽器TypeError:document.getElementById(...)爲null因爲我在使用桌面,我不需要等待加載? – Jon