在Chrome中播放音频时抛出domexception

时间:2019-04-26 16:12:19

标签: javascript media

您好,我在Chrome中播放音频时遇到异常。

这是我播放音频的功能

$(document).ready(function ()
{
    generateAlarm();
});

function generateAlarm()
{
    alarm_1 = new Audio();
    alarm_1.src = '/Content/assets/sounds/alarm_1.mp3';
    const playPromise = alarm_1.play();

    if (playPromise !== null)
    {
        playPromise.catch(() => {
           const btn = $('#playAlarm');
           btn.click();
         });
    }
}

document.getElementById('playAlarm').addEventListener("click", handlePlayButton, false);

function handlePlayButton()
{
    if (alarm_1.paused) {
        generateAlarm();
    }
    else {
        alarm_1.pause();
    }
}

有人可以告诉我上述代码有什么问题吗? 预先谢谢你。

2 个答案:

答案 0 :(得分:0)

由于音频令人讨厌并且经常被滥用,因此不再允许自动播放音频。您必须先等待用户与页面交互。您可以查看Google的本指南,了解如何使用新的AudioContext API:https://developers.google.com/web/updates/2018/11/web-audio-autoplay

答案 1 :(得分:0)

到目前为止,我唯一能找到的解决方案是更改chrome自动播放策略,如下所示:

  

chrome:// flags /#autoplay-policy

并将其设置为

  

不需要用户手势

我不是解决问题的正确方法,但是我再也没有例外了。如果有人有更好的主意,我将不胜感激。