2

在 Javascript 中,只有在 Android 上,当使用 touchstart 事件调用的函数中的 play() 启动音频剪辑时,我会收到 DOMException 错误。

我使用以下代码设置事件:

instructionsDiv.addEventListener("touchstart", touchStart, false);

我使用以下代码调用函数中的音频剪辑:

instructionsDiv.removeEventListener("touchstart", touchStart);
audio = new Audio(sndSources.welcome);
audio.play();

我收到此警告:“无法在 'HTMLMediaElement' 上执行 'play':API 只能由用户手势启动。”

这个错误:“未捕获(承诺)DOMException:play() 只能由用户手势启动。”

这是我的困惑:1.我使用触摸事件通过用户手势启动它2.这只发生在Android上。它在 iPhone 上运行良好

有任何想法吗?

4

2 回答 2

2

有完全相同的问题。根据我的测试,Android 不会将“touchstart”视为媒体播放的手势。我改用“mousedown”,它按预期工作。

于 2017-06-29T10:01:10.237 回答
1

我通过将HammerJs用于用户手势并绕过 DOM 异常来处理相同的问题。

const mc = new Hammer(element);
mc.on('tap', function() {});
于 2018-01-10T18:19:42.573 回答