J’aimerais utiliser les dimensions d’un élément vidéo HTML5 en JavaScript. La balise video
elle-même n’a pas de dimensions définies, je pense donc qu’elle s’adaptera à la taille de la vidéo (ce qui est le cas). Mon balisage ressemble à ceci:
Lorsque j’utilise simplement jQuery pour obtenir la height()
l’élément height()
et / ou la width()
, j’obtiens une valeur par défaut de 300 car il n’attendra pas le chargement de la vidéo. Donc ce que j’ai découvert sur le Web ( ici et ici ), c’est que je devrais attendre le onloadedmetadata
onloadedmetadata. J’essaie donc de faire ce qui suit dans mon JS:
var video = document.getElementById('viddy'); video.onloadedmetadata = function(e){ var dimensions = [video.videoWidth, video.videoHeight]; alert(dimensions); }
Pourtant, l’événement ne sera jamais déclenché (bien que la vidéo soit chargée et jouée) et je ne pourrai jamais obtenir mes dimensions. La même chose se produit avec un jQuery- bind('load',
et de toute autre manière que je pourrais penser. Une idée? Merci.
Mettez votre code dans une function
à la fin de votre tête html (par exemple, appelé ‘init’) et associez-le au DOMContentLoaded
-event:
...
Voir aussi cet exemple .
=== UPDATE ===
Pour Chrome, vous devez modifier l’ajout de l’auditeur à:
video.addEventListener('loadedmetadata', function(e){
Voir aussi cet exemple mis à jour .
=== UPDATE ===
Avec jquery:
$(document).ready(function() { $('#viddy').on('loadedmetadata', function() { var dimensions = [this.videoWidth, this.videoHeight]; alert(dimensions); }); });
Voir aussi cet exemple mis à jour .