提问者:小点点

未捕获(promise)DOMExc0019: play()失败,因为用户没有首先与文档交互


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()函数不起作用,它给出了错误“未捕获(promise中)DOMExc0019: play()失败,因为用户没有首先与文档交互。”

建议一些修复。


共1个答案

匿名用户

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

所以在你的例子中,当用户点击某个东西时,应该调用nextSequence()

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