2013-01-11 86 views
1

可能重複:
HTML5 audio element with dynamic sourceHTML5音頻結束功能

我試圖讓玩家一旦目前的一端重新加載新的軌道,但我想我可能有做錯了什麼。

這是玩家:

<audio id="audio" autoplay controls="controls" onclick="start()"> 
<source src="song.php" type="audio/mpeg" /> 
</audio> 

這裏的腳本:

function start(){ 
    var audio = document.getElementById('audio'); 
    audio.play(); 
    audio.addEventListener('ended',function(){ 
     $.post("song.php", function(result){ 
     audio.src = result; 
     audio.pause(); 
     audio.load(); 
     audio.play(); 
    }); 
    }); 
} 

如果我改劇本這一點,它的工作原理......但我不想重裝整個頁面:

function start(){ 
    var audio = document.getElementById('audio'); 
    audio.play(); 
    audio.addEventListener('ended',function(){ 
     window.location = 'player.html'; 
    }); 
} 

回答

9

對於初學者,每次單擊元素時都會附加一個新的事件處理程序。如果有人經常暫停音樂,他們會遇到問題。

這一翻譯,試試這個:

<audio id="audio" autoplay controls src="song.php" type="audio/mpeg"></audio> 
<script type="text/javascript"> 
    document.getElementById('audio').addEventListener("ended",function() { 
     this.src = "song.php?nocache="+new Date().getTime(); 
     this.play(); 
    }); 
</script> 

我假設song.php是一個PHP文件,返回音頻數據。 nocache查詢參數將確保每次實際調用該文件。

+0

謝謝!這是我一直在尋找:) – austinhollis

+0

如果你想把這個作爲答案在http://stackoverflow.com/questions/14190160/html5-audio-element-with-dynamic-source/14191068太,我會接受它也是如此。 – austinhollis