0

我有一个按钮,当按下它时,它会发出短促的声音。它在第一次按下并播放声音时工作。下一次和所有其他时间它都不起作用(直到我重新加载页面,然后它再次起作用)。我的代码如下:

我尝试添加 audio.stop(); 在 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>
4

4 回答 4

1

一种不同的解决方案,并且由于某些代理从远程重新加载文件而不太容易出现效率问题,是在您的示例中调用audio.currentTime = 0之前调用audio.play() ,这将变为:

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

编辑
在 chrome 上currentTime最初似乎是只读的。所以这行不通。有一个解决方法:
如果您src手动设置音频对象(甚至与中相同的值audio.src = audio.src:)currentTime变为可设置,上述解决方案将按预期工作

于 2013-02-13T05:32:08.287 回答
0

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

你可以试试这个:

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

buttonPlaySound.onclick = function () { 
    if (played) {
        audio.pause();
    }
    audio.play();
    played = true;
};
于 2013-02-13T04:39:55.477 回答
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>
于 2013-02-13T04:40:43.313 回答
0

添加 audio.load(); 在 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>
于 2013-02-13T04:49:09.997 回答