Comment obtenir la largeur réelle / hauteur d’un élément après le chargement dont la largeur / hauteur réglée à l’ origine PERCENTAGE?

J’ai un iframe, dont les points de contenu à un document HTML.

Dans ce document HTML, il y a un élément EMBED pointant vers un document PDF. Cette EMBED a été configurée à l’origine avec une largeur et une hauteur exprimées en pourcentage (telles que: width: 100%; height: 100% ).

Ma question est:

Après le chargement de l’iframe, comment puis-je récupérer la hauteur et la largeur absolues réelles (dans toute unité px, pt, em, etc.) de l’élément EMBED?

J’ai essayé toutes les propriétés js possibles (largeur, hauteur, style: clientWidth, clientHeight, offsetWidth, offsetHeight …) et jQuery également (telles que outerWidth, outerHeight, etc.), mais cela semble sans espoir.

Cela devrait vous retourner ce dont vous avez besoin:

 document.getElementById("id").clientHeight document.getElementById("id").clientWidth 

id est un identifiant unique de l’élément EMBED.

Pour plus d’informations à ce sujet:

https://developer.mozilla.org/en/DOM:element.clientHeight

https://developer.mozilla.org/en/DOM:element.clientWidth

http://jsfiddle.net/purmou/9XXwf/2/

Ceci utilise la width() et la height() jQuery. Actuellement, il trouve la largeur / hauteur totale d’un object, y compris le remplissage, les bordures, les marges, etc. Si vous souhaitez trouver la largeur et la hauteur de l’élément lui-même, à l’exclusion des bordures, etc. var width = this.offsetWidth; avec var width = $(this).width(); et var height = this.offsetHeight; avec var height = $(this).height(); .

Vous devez utiliser les propriétés .offsetWidth et .offsetHeight. Remarque! ils appartiennent à l’élément et non à element.style.

 var width = document.getElementById('foo').offsetWidth; 

Cela fonctionne dans tous les navigateurs modernes. Mais méfiez-vous! offsetWidth / offsetHeight peut renvoyer 0 si vous avez récemment effectué certaines modifications DOM à l’élément. Vous devrez peut-être appeler ce code dans un appel à setTimeout après avoir modifié l’élément. C’était peut-être votre problème?