52

我有一个 JavaScript 代码可以在点击时播放声音。它适用于 Chrome,但在 Firefox 上它会在加载时启动。

任何人都可以帮忙吗?

<script>
var audio = new Audio("http://music.ogg");

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

audio.loop = true;

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

</script>

<input type="image" src="http://button.png" onclick="audio.play()">
4

7 回答 7

93

试试下面的代码片段

<!doctype html>
<html>
  <head>
    <title>Audio</title>
  </head>
  <body>

    <script>
      function play() {
        var audio = document.getElementById("audio");
        audio.play();
      }
    </script>

    <input type="button" value="PLAY" onclick="play()">
    <audio id="audio" src="https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3"></audio>

  </body>
</html>

于 2013-09-16T11:13:36.433 回答
19

JavaScript

function playAudio(url) {
  new Audio(url).play();
}


HTML

<img src="image.png" onclick="playAudio('mysound.mp3')">


在大多数现代浏览器中受支持并且易于嵌入到 HTML 元素中。

于 2019-05-19T09:27:29.410 回答
5

那行得通

<audio src="${ song.url }" id="audio"></audio>
<i class="glyphicon glyphicon-play-circle b-play" id="play" onclick="play()"></i>

<script>
    function play() {
        var audio = document.getElementById('audio');
        if (audio.paused) {
            audio.play();
            $('#play').removeClass('glyphicon-play-circle')
            $('#play').addClass('glyphicon-pause')
        }else{
            audio.pause();
            audio.currentTime = 0
            $('#play').addClass('glyphicon-play-circle')
            $('#play').removeClass('glyphicon-pause')
        }
    }
</script>
于 2016-11-07T18:01:43.727 回答
2

现在Web Audio API已经出现并获得了浏览器支持,这可能是一个更强大的选择。

Zounds是围绕该 API 的原始包装器,用于在使用点以最少的样板播放简单的一次性声音。

于 2017-08-18T12:14:39.707 回答
1

你可以在两行中做到这一点

let playSound = () => new Audio("src").play()
<button onclick="playSound()">Play</button>

于 2021-09-14T12:01:20.153 回答
0

虽然有几个答案相似,但我仍然有一个问题 - 用户会多次点击按钮,播放音频(要么是意外点击,要么他们只是在“播放”......)

一个简单的修复:

var music = new Audio();
function playMusic(file) {
    music.pause();
    music = new Audio(file);
    music.play();
}

在加载时设置音频允许在每次调用函数时暂停“音乐” - 即使用户多次单击按钮,也可以有效地停止“噪音”(并且也不需要关闭按钮,尽管对于用户体验它可能是你想做的事情)。

于 2020-05-04T21:56:35.927 回答
0

HTML:

<button onclick="play()">Play File</button>
<audio id="audio" src="https://s3.amazonaws.com/freecodecamp/drums/Heater-1.mp3"></audio>

JavaScript:

let play = function(){document.getElementById("audio").play()}
于 2020-10-24T16:04:13.023 回答