播放音频时出现诺言错误[JS]

时间:2019-03-27 14:36:42

标签: javascript html

我试图用Java单击播放音频,但每次这样做,chrome都会抛出错误

未捕获(承诺)的DOMException

我阅读了一些有关它的文章,每个人都说它在您尝试时会发生
自动播放,无需用户操作,但我的情况有所不同。 这是我的代码:

border={false}

这是html: let correctSoundEffect = new Audio('correct.mp3'); const checkAnswer = () =>{ correctSoundEffect.play(); }

1 个答案:

答案 0 :(得分:-1)

该错误是由于加载资源时遇到的问题。
您的控制台中可能有一个先前的错误消息,例如

  

无法加载资源:服务器以404()正确的状态响应。mp3:1

之类的,或者,您的资源无法解析为有效的音频文件。

const src="willfail.mp3";
let correctSoundEffect = new Audio(src);
const checkAnswer = () =>{
    correctSoundEffect.play();
    log.textContent = "check your browser's console";
}
<button onclick="checkAnswer()">Play</button>
<pre id="log"></pre>

无论如何,即使HTML属性事件确实不是一个好习惯,您也可能希望检查开发工具的网络面板并知道您的代码应该可以正常工作。

const src="https://dl.dropboxusercontent.com/s/1cdwpm3gca9mlo0/kick.mp3";
let correctSoundEffect = new Audio(src);
const checkAnswer = () =>{
    correctSoundEffect.play();
}
<button onclick="checkAnswer()">Play</button>

一种更好的重写方式:

const src = "https://dl.dropboxusercontent.com/s/1cdwpm3gca9mlo0/kick.mp3";
let correctSoundEffect = new Audio(src);
document.getElementById('audio_player')
 .addEventListener('click', (evt) => {
   correctSoundEffect.play();
 });
<button id="audio_player">Play</button>