Forum Programmation.web Comment déterminer la hauteur d'une page html

Posté par  .
Étiquettes : aucune
0
3
nov.
2004
Je m'explique :

Il existe un objet OBJECT (que j'utilise maintenant à la place de IFRAME) qui me permet d'intégrer une "page web" à l'intérieur d'une autre page web.

ATTENTION je connais la LARGEUR de mon objet/iframe/page (enfin, je sais quelle largeur je veux lui donner)

Quel interet me direz vous ? Dans mon ca, cela me permet d'utiliser des CSS différent pour des pages html statiques sans formulaires ni javascript dont je ne maitrise pas la provenance.

L'inconvénient de cette méthode est qu'on se retrouve avec des scrollbars en plein milieu de sa page principale si la page à intégrer esr plus grande que l'IFRAME (OBJECT) déclaré.

En gros, (attent c'est un exemple rapide , pas forcement valide). si je fait ca :
[html]
[body]
[iframe src="http://monserveur/mapage(...)"][/iframe]
[/body]
[/html]

et que mapage contient le man de bash, je vais avoir une super scrollbar sur mon iframe.

maintenant, et ce la que je demande de l'aide, je pense qu'il doit y avoir un moyen de précalculer la hauteur de mon iframe. auquel cas
on pourrait faire ceci :

[html]
[body]
[iframe style="height: hauteur_precalculee" src="http://monserveur/mapage(...)"][/iframe]
[/body]
[/html]

avec ca, j'aurai ma page principale qui grandira (en fonction de mon iframe qui grandira) mais pas de scrollbar sur l'iframe.

Toute l'astuce etant de calculer cette hauteur sans que ca se voit.

J'ai essayé des trucs de porcasse.

par exemple.

J'affiche le contenu de ma page dans un [div] avec des objet en debut et fin de div, et je calcule leur hauteur. Inconvenient, si je veux faire ca discret avec display: none , les hauteurs ne sont plus valide.

Donc je cherche désespérement la formule magique pour calculer la taille (en hauteur) d'une page web quand on connais sa largeur avant de l'afficher (une fois affiché je sais le faire)
  • # hein ? kékidit ?

    Posté par  . Évalué à 1.

    Difficile question,
    la hauteur de la page va dépendre de la taille de la police qui affichera le texte. (Les images, c'est facile on connait la taille.)
    Il faudra un vrai programme de calcul d'emprise de ton texte, déja pas simple ! En html, rien a faire, en javascript non plus, en php, asp, java, binaire autorisé sur le serveur web, peut être... mais bonjour le travail.
    En plus : si le client web passe en 'plus gros' pour la police utilisé [ ctrl ++] tout ce travail pour rien..
    euh... regarde un bon film au lieu d'essayer, ce sera du temps de gagné.
    :-)
  • # offsetHeight

    Posté par  . Évalué à 2.

    essaye avec l'attribut DOM offsetHeight du body de la page contenue ...

    Dam
  • # Et avec du JavaScript ?

    Posté par  . Évalué à 1.

    Ben oui, a moins que je ne dise une grosse bêtise, pourquoi ne pas procéder comme suit :
    - La page html affichée dans le iframe comporte une certaine hauteur, que l'on peut récupérer par le biais du javascript, non ? Genre (appel depuis la page contenant le iframe) :
    document.iframe[0].height = document.iframe[0].document.height, ou quelque chose d'approchant, non ? Je n'ai pas testé, mais ça devrait pouvoir marcher... A moins qu'il ne faille faire cet appel depuis la page html affichée dans le iframe, ce qui serait plus logique, en fait....
    je ne sais pas trop... document.parent.iframe[0].height = document.height ? A tester, peut-être....
    Si j'ai dit des bêtises, tapez pas trop fort quand même....
  • # JS

    Posté par  . Évalué à 1.

    <scrip t>
    function iFrameHeight() {
    	var h = 0;
    	if ( !document.all ) {
    		h = document.getElementById('blockrandom').contentDocument.height;
    document.getElementById('blockrandom').style.height = h + 60 + 'px';
    	} else if( document.all ) {
    		h = document.frames('blockrandom').document.body.scrollHeight;
    document.all.blockrandom.style.height = h + 20 + 'px';
    	}
    }
    </scr ipt>
    < ifram e   onload="iFrameHeight()" src="mapage.html"   width="100%" height="500" scrolling="auto" align="top" frameborder="0" class="wrapper">
    This option will not work correctly.  Unfortunately, your browser does not support Inline Frames
    </ i f  r a m e >
    

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.