在touchstart上播放音频

时间:2017-04-20 20:00:08

标签: javascript android google-chrome touch html5-audio

触摸启动后播放音频时遇到问题。我在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>
&#13;
&#13;
&#13;

当我在移动设备上打开它并测试touchstart时,我在控制台中收到此错误:

  

警告:无法执行&#39;播放&#39; on&#39; HTMLMediaElement&#39;:API只能   由用户手势发起。

     

错误:未捕获(在promise中)DOMException:play()只能是   由用户手势发起。

touchstart不被视为用户手势吗?这是故意的行为还是一个错误?

1 个答案:

答案 0 :(得分:-1)

几个月前,我设置了chrome旗 chrome:// flags / #disable-gesture-requirement-for-media-playback为true 并且在touchstart上播放事件在chrome中正常工作。 不幸的是,在更新chrome之后,这个标志上次消失了。

现在,我正在通过在我的手机中使用firefox来解决这个问题。它现在是一个理想的解决方案,但我找不到更好的东西。 对我来说奇怪的是,chrome使用其他js的实现。