J'ai rencontré ce problème récemment - ce qui pourrait être une condition de concurrence entre play()
et pause()
. Il semble qu'il y est une référence à ce problème, ou quelque chose lié ici.
Comme @Patrick points, pause
ne renvoie pas une promesse (ou autre), de sorte que la solution ci-dessus ne fonctionne pas. Alors que MDN n'a pas de docs sur pause()
, dans le projet de WC3 pour les Médias Éléments, il est dit:
médias.pause()
Définit la couleur de l'attribut à true, le chargement de la ressource pour les médias si nécessaire.
On peut également vérifier l' paused
d'attribut dans leur délai de rappel.
Basé sur cette grande réponse, voici une façon, vous pouvez vérifier si la vidéo est (ou n'est pas) vraiment de jouer, donc vous pouvez sans risque de déclenchement d'un jeu() sans erreur.
var isPlaying = video.currentTime > 0 && !video.paused && !video.ended
&& video.readyState > 2;
if (!isPlaying) {
video.play();
}
Sinon, @Patrick's réponse devrait fonctionner.