在touchstart事件上播放音频

3

我在touchstart后播放某些音频时遇到了问题。 我有以下代码,在Chrome 57中运行:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Play Media on user touch</title>
 </head>
 <body>
  <div id="play">Click me to play audio!</div>
  <script type="text/javascript">
   document.querySelector('#play').addEventListener('touchstart', function() {
                                new Audio('http://techslides.com/demos/samples/sample.mp3').play()        
   })
  </script>
 </body>
</html>

当我在移动设备上打开并测试touchstart时,控制台会出现以下错误:
警告:无法执行“play”操作于“HTMLMediaElement”上:API只能由用户手势启动。 错误:未捕获的(在承诺中)DOMException:play()只能由用户手势启动。
难道touchstart不被视为用户手势吗?这是故意的行为还是一个bug?
2个回答

0

仅第一次不播放,用户点击任何地方后 - 声音可以播放


-1
几个月前,我将Chrome标志chrome://flags/#disable-gesture-requirement-for-media-playback设置为true,并在chrome中成功地使用touchstart事件播放。 不幸的是,在更新Chrome后,这个标志消失了。
现在,我通过在移动设备上使用Firefox来解决这个问题。虽然这不是一个理想的解决方案,但我没有找到更好的方法。 对我来说,Chrome使用其他js实现方式很奇怪。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接