【问题标题】:I inconsistently get the "play() failed because the user didn't interact with the document first" error when trying to automatically play some audio尝试自动播放某些音频时,我不一致地收到“播放()失败,因为用户没有先与文档交互”错误
【发布时间】:2019-11-11 09:55:55
【问题描述】:

当页面加载时,我希望音频文件自动播放。它工作过一次,但是当我刷新时,我得到了“play() 失败,因为用户没有先与文档交互”错误。当我更改一些代码时,它再次工作,但刷新后我一直收到错误。

我已经尝试过模拟一次点击,正如我上面所说的,它工作了一次。

这是我现在的代码:

$(".header-bg").click();
console.log("clicked");

$(document).ready(function() {
    console.log("loaded");
    $('#medieval-music')[0].play();
});

两个控制台日志被记录,但音乐没有播放。

【问题讨论】:

  • 大多数浏览器都有自动播放阻止功能 - see here for some more info。让音频自动播放从根本上说是反用户的——很多人觉得它很烦人,它会消耗额外的带宽,而且它可能会在不适当的时刻突然播放意想不到的噪音。请不要试图对您的用户造成这种影响,他们不会感谢您的。如果他们愿意,请允许他们播放音频。无论如何,由于上述阻塞功能,您无法保证它始终有效。
  • 我明白这一点,但是 - 这是一个学校项目的游戏,这就是我想要播放音乐的原因。
  • 好的,但是浏览器不知道也不关心这些情况。老实说,我不明白为什么这是一个问题?一旦用户同意开始游戏,就让音乐播放。
  • 更多关于自动屏蔽的信息:developers.google.com/web/updates/2017/09/…

标签: javascript jquery audio autoplay domexception


【解决方案1】:

我假设您使用的是 html5 <audio> 标记。如果是这样,将其默认设置为静音,如下所示:

<audio mute="true"></audio>

问题是现在大多数浏览器都会屏蔽autoplay capability,以防止用户在打开新标签页时听到噪音。

有关此答案的更多主题,请查看this

【讨论】:

    【解决方案2】:

    在 html &lt;audio controls autoplay&gt;&lt;/audio&gt; 中使用自动播放属性,每次加载页面时,音频文件都会自动播放

    【讨论】:

    猜你喜欢
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多