2013-02-13 95 views
0

我有一个按钮,当按下时它应该播放短暂的声音。它在第一次按下并播放声音时起作用。下一次和所有其他时间它不起作用(直到我重新加载页面,然后再次工作)。我的代码如下:HTML5音频按钮 - 第一次按下,然后停止工作

我试着添加audio.stop(); before audio.play();希望它能解决它,但它使它不工作。

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>HTML5</title> 
</head> 
<body> 

<audio> 
<source src="buzzer.mp3" type="audio/mpeg"> 
</audio> 

<input type="submit" id="buttonPlaySound" value="Play Sound"> 

<script> 
var audio = document.getElementsByTagName("audio")[0]; 

buttonPlaySound.onclick = function() { 
    audio.play(); 
}; 
</script> 
</body> 
</html> 
+0

您正在使用的浏览器上面的解决方案是否行得通呢? – Neel 2013-02-13 04:38:09

+0

Mac OS X上的Safari 6.0.2 10.8.2 – user1822824 2013-02-13 04:39:04

+0

您是先试用这个吗? http://stackoverflow.com/questions/9335577/html5-audio-sound-only-plays-once – 2013-02-13 04:39:07

回答

1

不同的解决方案,并且不容易由于一些代理商重装远程是文件的效率问题通过调用audio.currentTime = 0调用你的榜样audio.play() 这将成为前:

buttonPlaySound.onclick = function() { 
    audio.currentTime = 0; 
    audio.play(); 
}; 

编辑
on chrome currentTime最初似乎是只读的。所以这是行不通的。有一种变通方法:
如果您手动音频对象上设置src(甚至到了相同的值:audio.src = audio.srccurrentTime变得可设置和预期

0

这是因为HTML5音频播放一次,其状态正在播放,所以它不会再播放。

你可以试试这个:

var audio = document.getElementsByTagName("audio")[0]; 
var played = false; 

buttonPlaySound.onclick = function() { 
    if (played) { 
     audio.pause(); 
    } 
    audio.play(); 
    played = true; 
}; 
0

你应该尝试这样的..

<input type="submit" id="buttonPlaySound" value="Play Sound" onclick ="Play()"> 
<input type="submit" id="buttonPlaySound" value="Play Sound" onclick ="Pause()"> 

<script> 
var audio = document.getElementsByTagName("audio")[0]; 
var played = false; 

    function play() 
    { 
     audio.play(); 
    } 
    function pause() 
    { 
     if(played) 
     { 
      audio.pause(); 
     } 
     audio.play(); 
     played = true; 
    }; 
</script> 
0

添加audio.load(); before audio.play();为我修好了。

<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>HTML5</title> 
</head> 
<body> 

<audio> 
<source src="buzzer.mp3" type="audio/mpeg"> 
</audio> 

<input type="submit" id="buttonPlaySound" value="Play Sound"> 

<script> 
var audio = document.getElementsByTagName("audio")[0]; 

buttonPlaySound.onclick = function() { 
    audio.load(); 
    audio.play(); 
}; 
</script> 
</body> 
</html>