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:
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?