Uncaught (in promise) DOMException: play() failed 因为用户没有先与文档交互
Posted
技术标签:
【中文标题】Uncaught (in promise) DOMException: play() failed 因为用户没有先与文档交互【英文标题】:Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first 【发布时间】:2021-03-04 17:27:49 【问题描述】:var buttonColours = ["red", "blue", "green", "yellow"];
var gamePattern = [];
function nextSequence()
var randomNumber = Math.floor(Math.random() * 4);
var randomChosenColour = buttonColours[randomNumber];
gamePattern.push(randomChosenColour);
$("#" + randomChosenColour).fadeIn(100).fadeOut(100).fadeIn(100);
var audio = new Audio("sounds/" + randomChosenColour + ".mp3");
audio.play();
nextSequence();
play() 函数不工作,它给出了错误 “未捕获(承诺中)DOMException:play() 失败,因为用户没有先与文档交互。”
建议一些修复。
【问题讨论】:
文件准备好后你是否打电话给nextSequence()
?
我只是在检查该功能是否有效。但它在控制台中显示此错误。
【参考方案1】:
这是大多数现代浏览器中的一项功能,可防止网站开发人员进行恶意/垃圾邮件操作。所以基本上网页将无法自动播放视频/音频,除非用户首先与网站交互(点击、悬停、点等)。
所以在你的例子中,nextSequence()
应该在用户点击某些东西时被调用。
document.getElementById("playbutton").addEventListener("click", nextSequence);
【讨论】:
那是检查函数是否工作。 $("#" + randomChosenColour).fadeIn(100).fadeOut(100).fadeIn(100); -- 这部分正在工作,但不是“audio.play()”。它在控制台中显示此错误的错误 - “未捕获(承诺中)DOMException:play() 失败,因为用户没有首先与文档交互。”以上是关于Uncaught (in promise) DOMException: play() failed 因为用户没有先与文档交互的主要内容,如果未能解决你的问题,请参考以下文章
解决Uncaught (in promise) reason的问题
Uncaught (in Promise) DOMException: play() 只能由用户手势启动
解决Uncaught (in promise) reason的问题
Uncaught (in promise):消息端口在收到响应之前关闭
vue控制台报 Uncaught (in promise) TypeError:
Uncaught (in promise) TypeError: Cannot set properties of null (setting 'innerText') in OpenWetherMa