2017-04-20 1 views
2

J'ai un problème pour lire de l'audio après un démarrage tactile. J'ai le code suivant que je cours dans Chrome 57 à faire:Lecture audio au démarrage

<!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>

Quand j'ouvre sur mon appareil mobile et de test pour touchstart, je reçois cette erreur console:

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.

Le point de contact n'est-il pas considéré comme un geste de l'utilisateur? Est-ce un comportement intentionnel ou un bug?

Répondre

-1

Il ya quelques mois, j'ai mis chrome chrome: // drapeaux/# disable-gesture-exigence-pour-media-playback à vrai et jouer sur l'événement touchstart a fonctionné correctement en chrome. Malheureusement, ce drapeau a disparu la dernière fois, après la mise à jour du chrome. Maintenant, je suis en train de contourner le problème en utilisant Firefox dans mon mobile. C'est maintenant une solution idéale, mais je n'ai pas trouvé quelque chose de mieux. Il est étrange pour moi que le chrome utilise d'autres implémentations de js que d'autres.