web-dev-qa-db-fra.com

Pourquoi les fichiers audio JavaScript .play () ne parviennent-ils pas sur le safari iPhone?

J'ai une application Web JavaScript qui lit périodiquement de l'audio comme ceci:

var SOUND_SUCCESS = new Audio('success.mp3');
SOUND_SUCCESS.play();

Cela fonctionne très bien sur les navigateurs de bureau (testé dans Edge et Chrome), mais il ne joue pas sur Safari sur iPhone.

J'ai parcouru Stack Overflow et j'ai trouvé quelques réponses il y a quelques années: il n'est pas possible de lire de l'audio à partir de Safari sans être en plein écran. Est-ce toujours le cas?

17
Leon Overweel

iOs désactive la lecture automatique, mais demande que la lecture soit initiée dans le cadre d’une interaction utilisateur (par exemple, vous pouvez démarrer la lecture dans un écouteur Touchstart). Il existe un peu de documentation à ce sujet sur la documentation destinée aux développeurs d'Apple . Vous trouverez également cet article Surmonter les limitations audio HTML5 HTML5 sur le site de développement d’IBM qui contient des exemples et plus de détails.

20
Ed Ballot

IOS sur mobile désactive la lecture automatique du son par défaut. Donc, pour contourner ce problème. Vous pouvez placer le bouton activer/désactiver quelque part sur la page et jouer du son à l'aide d'un élément audio (" audioElement ") si l'utilisateur clique sur le bouton. 

Après cela, le même " audioElement " peut être utilisé pour jouer des sons futurs en modifiant son attribut " src " et en appelant sa méthode " play () ", sans aucune autre interaction de la part de l'utilisateur.

0
xingliang cai