2017-04-20 185 views
2

在touchstart後播放某些音頻時出現問題。我有以下的代碼,我在Chrome 57上運行這樣做:在touchstart上播放音頻

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

當我打開這個我的移動設備和測試touchstart,我在控制檯收到此錯誤:

Warning: Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture.

Error: Uncaught (in promise) DOMException: play() can only be initiated by a user gesture.

touchstart是否被視爲用戶手勢?這是故意的行爲還是錯誤?

回答

-1

幾個月前,我設置的鍍鉻標誌 鉻://標誌/#禁止-手勢要求換媒體播放爲true 和touchstart事件起到鉻工作正常。 不幸的是,這個標誌在上次更新chrome後消失了。

現在,我正在通過在手機中使用firefox解決這個問題。這是一個理想的解決方案,但我沒有找到更好的方法。 對我來說奇怪的是,chrome使用了其他的js的其他實現。