首页 > 解决方案 > Uncaught (in promise) DOMException: play() failed 因为用户没有先与文档交互

问题描述

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() 失败,因为用户没有首先与文档交互。”

建议一些修复。

标签: javascript

解决方案


这是大多数现代浏览器中的一项功能,可防止网站开发人员进行恶意/垃圾邮件操作。所以基本上网页将无法自动播放视频/音频,除非用户首先与网站交互(点击、悬停、点等)。

因此,在您的情况下,nextSequence()应该在用户单击某些东西时调用。

document.getElementById("playbutton").addEventListener("click", nextSequence);

推荐阅读