我在window load
侦听器函数中有这个。
var audio = new Audio();
audio.src = "assets/silence.mp3";
audio.load();
document.getElementById("body").addEventListener(
'touchstart',
function(evt){ audio.play(); audio = 0; },
{capture:false,once:true,passive:true}
);
在android上的chrome (远程调试打开)中,我触摸屏幕,它(正确地)触发尝试播放音频。但是,它会失败,并将以下内容记录到控制台:
(index):65 Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
如果不是通过用户交互事件侦听器,我如何才能以一种确保用户启动的方式触发音频呢?
发布于 2020-05-03 03:59:42
我在做网络钢琴的时候也遇到了同样的问题。浏览器在加载时为钢琴充电,所以你可以在点击之前按下(实际上是触摸屏幕)钢琴键。我所做的是添加一个带有按钮的启动屏幕来开始游戏,这解决了这个问题,因为你必须在触摸钢琴键之前点击一些东西。
https://stackoverflow.com/questions/53825462
复制相似问题