如何处理Uncaught(在promise中)DOMException:play()请求被pause()调用中断

41 javascript asp.net wav

下面是我在aspx页面中的代码,允许在浏览器中播放wav格式的音频但是使用我当前的代码我无法在Chrome浏览器中播放wav音频,但它可以在mozilla firefox中运行.如何处理此异常

<script>
    window.onload = function () { document.getElementById("audio").play(); }
    window.addEventListener("load", function () { document.getElementById("audio").play(); });
</script>

<body>
    <audio id='audio' controls autoplay>
        <source src="Sounds/DPM317.wav" type="audio/wav" />
        Your browser does not support the audio element.
    </audio>
</body>
Run Code Online (Sandbox Code Playgroud)

小智 40

对于Chrome,他们更改了自动播放政策,因此您可以在此处阅读有关内容:

var promise = document.querySelector('audio').play();

if (promise !== undefined) {
    promise.then(_ => {
        // Autoplay started!
    }).catch(error => {
        // Autoplay was prevented.
        // Show a "Play" button so that user can start playback.
    });
}
Run Code Online (Sandbox Code Playgroud)


Sha*_*pey 17

我不知道这对你来说是否仍然存在,但我仍然留下我的评论,所以也许它会帮助别人.我有同样的问题,@ dighan在bountysource.com/issues/上提出的解决方案 为我解决了这个问题.

所以这是解决我的问题的代码:

var media = document.getElementById("YourVideo");
const playPromise = media.play();
if (playPromise !== null){
    playPromise.catch(() => { media.play(); })
}
Run Code Online (Sandbox Code Playgroud)

它仍然向控制台抛出错误,但至少视频正在播放:)


Sho*_*rma 12

  1. 所有新的浏览器支持的视频仅在静音的情况下才能自动播放,因此请放

<video autoplay muted="muted" loop id="myVideo"> <source src="https://w.r.glob.net/Coastline-3581.mp4" type="video/mp4"> </video>

像这样

  1. 如果您的网站使用https运行,则视频URL应与SSL状态匹配,然后视频URL也应为https且与HTTP相同


zap*_*ing 11

尝试在catch块中使用类似这样的回调。

document.getElementById("audio").play().catch(function() {
    // do something
});
Run Code Online (Sandbox Code Playgroud)


Akh*_*uvo 7

muted="muted"HTML5标签添加属性解决了我的问题