听起来并不总是在玩javascript

听起来并不总是在玩javascript,javascript,html,Javascript,Html,我正在使用以下代码在浏览器上播放声音: HTML <audio id="' + newMessageSoundObjectId + '"><source src="sound.mp3" type="audio/mpeg"></audio> 它在大多数情况下都能正常工作,但有时它会随机停止工作几分钟,然后重新启动,而无需重新加载页面或导航。此外,console不会出错 对于更多上下文,这用于在用户收到新消息时播放通知 是否有更好的方法确保播放声音?您可能会遇到

我正在使用以下代码在浏览器上播放声音:

HTML

<audio id="' + newMessageSoundObjectId + '"><source src="sound.mp3" type="audio/mpeg"></audio>
它在大多数情况下都能正常工作,但有时它会随机停止工作几分钟,然后重新启动,而无需重新加载页面或导航。此外,console不会出错

对于更多上下文,这用于在用户收到新消息时播放通知


是否有更好的方法确保播放声音?

您可能会遇到这样的情况,即在响应任何新的单击之前,它会等待完成剪辑

如果是,请在函数开头插入此代码,以便在每次单击剪辑时重置剪辑:

audio.currentTime = 0; // On each click, rewind clip to start
它看起来像这样:

if (playPromise !== undefined) {
    playPromise.then(function() {
    audio.currentTime = 0; // On each click, rewind clip to start
      // Automatic playback started!
    }).catch(function(error) {
      console.error("Sound was not played: " + error);
     });
<>你可能想考虑调整你的代码,这样它会更干净一些。我还没有测试过,但它应该可以正常工作:

const soundObject = document.querySelector("#newMessageSoundObjectId");

soundObject.addEventListener("mousedown", playClip);

function playClip() {
    audio.currentTime = 0; // On each click, rewind clip to start
    audio.play();
} else {
    console.error("Something went wrong");

可能是浏览器禁用音频播放或静音音频以防止用户烦恼-播放需要通过用户交互(如单击)启动我知道用户交互的需要,这将无法实现控制台中的承诺和输出。用户交互发生时,它工作几分钟到几个小时,然后停止工作几分钟,然后重新开始。
const soundObject = document.querySelector("#newMessageSoundObjectId");

soundObject.addEventListener("mousedown", playClip);

function playClip() {
    audio.currentTime = 0; // On each click, rewind clip to start
    audio.play();
} else {
    console.error("Something went wrong");