尝试播放声音时出现“播放()失败,因为用户没有先与文档交互”错误(javascript/html)
Posted
技术标签:
【中文标题】尝试播放声音时出现“播放()失败,因为用户没有先与文档交互”错误(javascript/html)【英文标题】:Getting "play() failed because the user didn't interact with the document first" error when trying to play sound (javascript/html) 【发布时间】:2020-03-09 18:40:22 【问题描述】:我正在尝试使用 javascript 在网页上播放声音,但每当我这样做时,都会出现上述错误。这是我的代码:
if (thing.startsWith("0"))
var a = new Audio("audio.mp4");
a.play();
此外,如果您打开控制台,声音会自动开始播放。
【问题讨论】:
哪里出错了? 在控制台中。 How to handle "Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first." on Desktop with Chrome 66?的可能重复 不,我的意思是您没有在问题中包含错误,您说“我收到上述错误”但问题中没有错误。 @LeviBlodgett 这是问题的标题。 【参考方案1】:这是因为 Google 更新了其自动播放政策,因此用户必须先与播放声音的窗口进行一些交互,例如“开始”按钮,然后您才能播放声音。发生这种情况是因为对于许多用户来说,突然播放声音很烦人。
【讨论】:
我知道这是一篇旧帖子,但有趣的是 Youtube 归 Google 所有,但至今仍不遵守该政策。 @avisk,YouTube 使用的技术已知吗?有些人可能会尝试亲自调查,但可能已经共享。 "一些交互" 但是没有列表说明这是什么意思,滚动不算数,也没有确认警报,似乎只有点击?【参考方案2】:var resp = audio.play();
if (resp!== undefined)
resp.then(_ =>
// autoplay starts!
).catch(error =>
//show error
);
这段代码帮助我删除了控制台的警告
【讨论】:
以上是关于尝试播放声音时出现“播放()失败,因为用户没有先与文档交互”错误(javascript/html)的主要内容,如果未能解决你的问题,请参考以下文章
我正在尝试显示文本,单击时播放音频,当声音结束时出现新文本,单击时播放新音频
使用 Android MediaPlayer 播放声音时出现问题