0

这是我加载和播放音频文件的代码。

<!DOCTYPE HTML>
<html lang="en-US">
<head>
     <meta charset="UTF-8">
     <title>Test audio</title>
</head>
<body>
<script type="text/javascript">
    window.onload = function() {
        var audio = new Audio("../../data/audio/background.ogg");
        audio.preload = "auto";

        audio.addEventListener('ended', function() {
            alert('ended');
        }, false);
        audio.addEventListener('canplaythrough', function() {
            audio.loop = true;
            audio.play();
        }, false);

        audio.onerror = function(event) {
            console.log(event.code);
        }

        audio.load();
    }
</script>
</body>
</html>

但我无法在 Chrome 上运行它(Firefox 或 IE 9 都可以),因为加载音频文件时,我总是收到错误消息

错误

如何修复我的代码?

4

2 回答 2

2

在桌面 Chrome 上,您可以仅在 HTML 中自动执行此操作,而无需任何 Javascript。

<audio autoplay>
  <source src="test.ogg" type="audio/ogg">
  <source src="test.mp3" type="audio/mpeg">
  Sorry, no Audio support
</audio>

您的代码通常应该可以工作。我只是把它放到http://jsbin.com/usific/1并添加了我自己的音频文件,我可以看到它正在下载整个文件,看起来你的服务器不接受请求,或者你输入了不正确的网址。

于 2013-07-09T07:32:00.457 回答
1

这对我有用:

        var audioElement;
        audioElement = new Audio("");
        audioElement.addEventListener('ended', function() {
            this.currentTime = 0;
            this.play();
        }, false);

        document.body.appendChild(audioElement);
        audioElement.src = '../../data/audio/background.ogg';
        audioElement.id = "audioElement";

        audioElement.addEventListener('canplaythrough', function() {
            audioElement.play();
        }, false);

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

        audioElement.onerror = function(event) {
           console.log(event.code);
        }
于 2013-07-09T07:47:57.610 回答