Chrome上的音频有时候不起作用

问题描述 投票:0回答:1
playSound : function() {
      var audio = new Audio(audio.mp3);
      audio.play();
 }

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

  1. 在我单击选项卡之前,声音永远不会播放(为此我转到另一个选项卡,然后单击当前选项卡)。在播放声音之前似乎需要一个事件。
  2. 有时候我得到异常并且音频永远不会播放“Uncaught(在promise中)DOMException:play()失败,因为用户没有先与文档交互。”

我不想搞乱HTML元素。

javascript html5 html5-audio
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.