在Javascript中,我在Android上使用play()从使用touchstart事件调用的函数启动音频剪辑时出现DOMException错误。
我使用以下代码设置了活动:
instructionsDiv.addEventListener("touchstart", touchStart, false);
我用这段代码调用函数中的音频片段:
instructionsDiv.removeEventListener("touchstart", touchStart);
audio = new Audio(sndSources.welcome);
audio.play();
我收到此警告: "无法执行'播放' on' HTMLMediaElement':API只能由用户手势发起。"
这个错误: " Uncaught(在promise中)DOMException:play()只能由用户手势启动。"
这是我的困惑: 1.我使用触摸事件以用户手势启动它 2.这只发生在Android上。它在iPhone上工作正常
有什么想法吗?
答案 0 :(得分:2)
有完全相同的问题。从我的测试来看,Android并没有考虑" touchstart"作为媒体播放的手势。我用了#34; mousedown"相反,它按预期工作。
答案 1 :(得分:1)
我通过将HammerJs用于用户手势并绕过DOM异常来处理同样的问题。
const mc = new Hammer(element);
mc.on('tap', function() {});