2011-11-24 192 views
4

我做了一個JavaScript音頻測試。所有的功能在Opera FF和Chrome中都可以使用,除了audio.oncanplaythrough和audio.onended(這兩個功能不會在Chrome上工作)。javascript audio onload

<!DOCTYPE html> 
<html> 
<body> 

<script> 
var audio = new Audio("http://www.w3schools.com/html5/song.ogg"); 

audio.oncanplaythrough = function(){ 
audio.play(); 
} 

audio.onended = function(){ 
alert('ended'); 
} 

</script> 
<a href="#" onclick="audio.play();">start</a><br/> 
<a href="#" onclick="audio.pause();">pause</a><br/> 
<a href="#" onclick="audio.volume=prompt('from 0 to 1',0.7)">volume</a><br/> 
<a href="#" onclick="audio.currentTime = 3;">jump</a><br/> 
</body> 
</html> 

回答

14

oncanplaythrough播放在整整35秒的事件,而不是一個方法,另一個事件稱爲ended和不onended

所以你需要傾聽事件並對他們採取行動。嘗試:

audio.addEventListener('ended', function() { 
    alert('ended'); 
}, false); 

audio.addEventListener('canplaythrough', function() { 
    audio.play(); 
}, false); 
+0

它不工作audio.onended:'( – Uw001

+0

:d後有一個空間'oncanplaythrough'。現在,它的工作,謝謝 – Uw001

+0

所以有(固定)!對不起,很高興它排序你的問題,但 –

3

添加和通過JavaScript

var audioElement = document.createElement('audio'); 
audioElement.setAttribute('src', 'loading.ogg'); 
audioElement.play(); 

獲取歌曲文件路徑和持續時間

audioElement.src; 
audioElement.duration; 

加載聲音

var audioElement = document.createElement('audio'); 
audioElement.setAttribute('src', 'Mogwai2009-04-29_acidjack_t16.ogg'); 
audioElement.load() 
audioElement.addEventListener("load", function() { 
    audioElement.play(); 
    $(".duration span").html(audioElement.duration); 
    $(".filename span").html(audioElement.src); 
}, true); 

停止播放,播放聲音

audioElement.pause(); 

變化體積

audioElement.volume=0; 

在歌曲

audioElement.currentTime=35; 
audioElement.play(); 
+1

...我問:如何使用audio.oncanplaythrough,並在Chrome – Uw001