【问题标题】:Audio on chrome some times work sometimes notchrome上的音频有时会起作用,有时不起作用
【发布时间】:2018-05-15 06:44:08
【问题描述】:
playSound : function() {
      var audio = new Audio(audio.mp3);
      audio.play();
 }

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

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

我不想弄乱 HTML 元素。

【问题讨论】:

标签: javascript html html5-audio


【解决方案1】:

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

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

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

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

【讨论】:

  • 谢谢,除了等待,我不能做任何事吗?
  • 您可以在该页面上阅读一些内容 - 一旦用户将他的“媒体参与指数”与您的网站交叉 - 例如安装在主屏幕上,播放您的视频/音频几次或类似的 - 您的自动播放将再次开始工作。检查他们为您提供的内容,然后您可以制定策略。
  • 但是我在我的代码中看不到任何我可以用“媒体参与指数”做的事情。似乎它不会让我在没有用户交互的情况下玩。我需要添加音频标签吗?
  • MEI 不在您的尽头:它基于用户过去播放您的媒体超过 7 秒的频率。基本上,如果你提供声音而用户从不播放它,它就永远不会自动播放。但是,如果您通过自动播放提供声音并且用户单击“播放”并看到 7 秒的相关媒体,那么下一次当他登陆您的页面时,您的自动播放将起作用。
猜你喜欢
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
相关资源
最近更新 更多