La vidéo html5 est lue deux fois (audio doublé) avec JQuery .append ()
Énorme WTF que j'ai pensé a un bug caché dans le semicomplex web app que je suis en train de faire, mais j'ai épluché vers le bas pour le code le plus simple possible, et il est toujours reproductibles dans Firefox, Chrome et Safari, de façon imprévisible, mais plus de la 1/2 du temps.
var v = $("<video id='v' src='http://ia600401.us.archive.org/18/items/ForrestPlaysTaik/forresto-plays-taik-piano-360.webm' autobuffer='auto' preload autoplay controls></video>");
$("#player").append(v);
- Ajouter un élément vidéo.
- Vidéo commence à charger et jouer.
- Vidéo audio sonne comme il est doublé.
- Pause le visible de la vidéo et une piste audio continue.
- Supprimer l'élément vidéo; le fantôme de l'audio continue à jouer.
- Supprimer l'image, et le fantôme de l'audio s'arrête (même si, une fois dans Firefox, il a continué à jouer après la fermeture de la fenêtre, et ne pas s'arrêter jusqu'à l'abandon de Firefox).
Voici une capture d'écran peut-être de montrer que je ne suis pas complètement fou: http://www.youtube.com/watch?v=hLYrakKagRY
Il ne semble pas se produire lors de la prise de l'élément avec .html()
au lieu de .append()
c'est mon seul indice: http://jsfiddle.net/cDpV9/6/
$("#player").html("<video id='v' src='http://ia600401.us.archive.org/18/items/ForrestPlaysTaik/forresto-plays-taik-piano-360.webm' autobuffer='auto' preload autoplay controls></video>");
Je suis sur OS X 10.6.7.
Je pense que je l'ai. Même juste de la création de l'objet JQuery sans l'ajouter à la page provoque le fantôme joueur à jouer: http://jsfiddle.net/cDpV9/8/
var v = $("<video id='v' src='http://ia600401.us.archive.org/18/items/ForrestPlaysTaik/forresto-plays-taik-banjo-360.webm' autobuffer='auto' preload autoplay controls></video>");
Pour l'instant je peux contourner cela en utilisant .html()
. Je vais signaler la question à JQuery.
source d'informationauteur forresto | 2011-05-08
Vous devez vous connecter pour publier un commentaire.
Peut-être que jQuery met en cache le contenu de
$()
avant d'ajouter à votre lecteur div? Donc, il est un autre exemple de la balise vidéo. Il pourrait être une erreur dans jQuery. Avez-vous essayé sans Jquery/js?Je voudrais essayer d'ajouter l'attribut autoplay après vous ajoutez le lecteur vidéo. Ceci devrait alors instancier la fonction de lecture.
Qui serait quelque chose comme ceci:
Lorsque vous créez des éléments en JavaScript c'est à dire des éléments de l'image, des objets, etc, ils sont chargés instantanément et stockées dans la mémoire comme des objets. C'est pourquoi vous pouvez précharger les images avant de charger une page. Il n'est donc pas un bug jQuery.
Ref: http://www.w3.org/TR/html5/video.html#attr-media-autoplay
J'ai eu le même problème ici. Cela semble être un problème avec l'utilisation de la "lecture automatique" attribut sur votre vidéo de balisage.
$('video')[0].play()
Vous pourriez obtenir le code html de
#player
et à ajouter la vidéo à votre auto, puis ajouter le total avec.html()
comme ceci:Il n'est pas aussi bon que le
.append()
fonction, mais si le.append()
ne fonctionne pas, vous pourriez être forcé de faire quelque chose comme ça.Ce celui qui a le mieux fonctionné dans mon cas:
J'ai résolu le mien par le chargement de la vidéo après le dom chargé: