Il est possible d'ajuster automatiquement la taille d'une iframe a celle de son contenu. (c'est d'ailleur valable pour (
presque ?) tous les éléments).
L'evenement onload de la balise BODY du document que contient l'iframe doit apeller une fonction de la fenêtre parent. C'est cette fonction qui ajustera la taille.
Voici le source de la page qui va contenir l'iframe :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> adjusting iframe size </title> <script type="text/javascript"> function adjustIFrameSize (iframeWindow) { if (iframeWindow.document.height) { var iframeElement = document.getElementById (iframeWindow.name); iframeElement.style.height = iframeWindow.document.height + 'px'; iframeElement.style.width = iframeWindow.document.width + 'px'; } else if (document.all) { var iframeElement = document.all[iframeWindow.name]; if (iframeWindow.document.compatMode && iframeWindow.document.compatMode != 'BackCompat') { iframeElement.style.height = iframeWindow.document.documentElement.scrollHeight + 5 + 'px'; iframeElement.style.width = iframeWindow.document.documentElement.scrollWidth + 5 + 'px'; } else { iframeElement.style.height = iframeWindow.document.body.scrollHeight + 5 + 'px'; iframeElement.style.width = iframeWindow.document.body.scrollWidth + 5 + 'px'; } } } </script> </head> <body> <h2>Auto ajustement d'un iframe</h2> <hr> <iframe name="iframeName" id="iframeName" marginwidth="0" marginheight="0" src="mapage.htm"><a href="mapage.html">page</a></iframe> <hr> </body> </html>
Ci-dessous le code de la page qui est chargé par l'iframe (ici :mapage.htm).
Pour l'utiliser dans votre page, vous aurez juste a copier l'evenement onload.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> test document which has random length </title> </head> <body onload="if (parent.adjustIFrameSize) parent.adjustIFrameSize(window);" > <script type="text/javascript"> var lines = Math.floor(Math.random() * 100) + 25; for (var i = 0; i < lines; i++) document.write(i + ' Kibology<br \/>'); </script> </body> </html>
Discussion
c’est exactement ce que je cherchais! ce script est fantastique :)
merci
Ce script est génial merci… Simplement, j'aimerais garder du script uniquement l'ajustement en hauteur afin de pouvoir attribuer la valeur width=“100%” pour que la frame prenne 100% de l'espace en largeur dans le <div> Quelqu'un peut il m'aider please ?
salut ! tu n'a qu'a mettre en commentaire les ligne suivante :
et
et ça devrais le faire
Merci de ta réponse rapide… Cependant je n'ai aucune connaissance en Javascript. Qu'appelles tu mettre en commentaire ? est-ce mettre // ?
Merci d'avance
En gros pour te faire part de mon pb… Voici le lien du site que je développe http://www.dynamhit.org/site2/index4.html
Au centre une frame (celle ou est inscrit Bonjour a tous), qui doit s'ajuster en hauteur ( fonction formidablement remplie par le script ^^ ) J'aimerai que la frame prenne 100% de la largeur. J'ai développé cette page en '%' et non en pixel. la frame est insérée dans une balise <div> régie par un style CSS.
Le code semble bloqué la frame à environ 200px en largeur…
Je m'excuse pour les explication peu claires, mais je ne suis qu'un débutant… si qqn m'a compris ^^
re salut. Oui par mettre en commentaire j'entends mettre des // devants. Tu peu aussi tous simplement les supprimer.
Problème résolu, merci iDo
Re : Je viens de m'appercevoir que le code ne fonctionne pas dans la version 6 d'Internet Explorer… quelqu'un aurait-il un correctif ou une explication à me fournir à ce sujet. Merci d'avance !!
salut,
tu obtiens une erreur ou rien ne se passe ?
salut, merci pour tous mes amis j'ai une question est qu'il y a une possibilité de afficher seulement une partie d'une page dans le IFRAME. par exemple une partie au centre.
salut
merci pour le javascript il marche bien mais juste avec le fichier interne, alors que pour les page externe (http://www.) il ne marche pas.
svp s'il vous avez une solution a mon probléme
Il s'agit d'une restriction de sécurité. C'est incontournable… Le seul moyen est de “récupérer” les page distante avec CURL (php) ou de mettre en place un reverseProxy (Module Apache). Mais aucune de ces deux solution n'est triviale a mettre en place.