首页 > 解决方案 > chrome上的音频有时会起作用,有时不起作用

问题描述

playSound : function() {
      var audio = new Audio(audio.mp3);
      audio.play();
 }

我正在使用上面的代码来简单地播放音频。但我面临以下两个问题:

  1. 在我单击选项卡之前,声音永远不会播放(为此,我转到另一个选项卡,然后单击当前选项卡)。似乎在播放声音之前需要一个事件。
  2. 有时我得到异常并且音频从不播放“未捕获(承诺)DOMException:play() failed because the user didn't首先与文档交互。”

我不想弄乱 HTML 元素。

标签: javascripthtmlhtml5-audio

解决方案


您可能会在 Chrome 发布的网站上看到自动播放媒体的政策更改:https ://developers.google.com/web/updates/2017/09/autoplay-policy-changes

本质上,该策略表示除非用户在您的媒体上进行交互并且您的处理程序* 不会同步启动媒体,否则它不会播放

注意同步这个词 - 你甚至不能使用 setTimeout 或类似的东西。这是为了保护用户免受垃圾广告等的侵害。其他浏览器也有此设置,但默认情况下它们可能并且很可能会启用此功能,因此您最好做好准备。

[*] - (例如点击处理程序)


推荐阅读