Problème avec document.body.clientHeight

Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008 - 14 nov. 2004 à 19:37
Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008 - 20 nov. 2004 à 10:45
Salut à tous,

J'aimerai positionner un calque dans ma page en fonction de la résolution de l'écran. Pour la largeur j'utilise la propriété document.body.clientWidth qui me donne la largeur utile de la page (sans l'habillage du navigateur) et qui fonctionne très bien, en revanche pour la hauteur la propriété document.body.clientHeight me renvoie toujours 0.
Est ce que quelqu'un sait pourquoi et comment je peux faire pour avoir la hauteur utile de la page ?

merci

22 réponses

chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
15 nov. 2004 à 03:49
La hauteur utile de la fenêtre chez IE en mode quirk est bien :
document.body.clientHeight . Elle est renseignée aprés le chargement :

window.onload=function(){
alert(document.body.clientHeight )
}
0
Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008
15 nov. 2004 à 17:43
Le problème c'est que document.body.clientHeight me renvoie toujours 0 donc je peux pas l'utiliser pour positionner mon calque.
C'est bizarre car la propriété document.body.clientWidth marche très bien pour la largeur donc je comprend pas pourquoi document.body.clientHeight ne marche pas pour la hauteur ...

Est ce que quelqu'un pourrait m'aider ?
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 nov. 2004 à 21:21
t'as quoi comme navigateur ?

if (document.body){
var larg = (document.body.clientWidth);
var haut = (document.body.clientHeight);
}else{
var larg = (window.innerWidth);
var haut = (window.innerHeight);
}

tu peuxd tester ça...
0
Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008
16 nov. 2004 à 09:39
j'ai tester ton code coucou747 mais y'a rien à faire ça marche toujours pas :

document.body.clientHeight me renvoie toujours 0
window.innerHeight me renvoie undefined

Une autre solution ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
16 nov. 2004 à 09:58
tu doit tester une page vide,essai ça :
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
16 nov. 2004 à 20:01
mais ta's quel navigateur ?
0
Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008
16 nov. 2004 à 21:18
j'ai internet explorer 6
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
16 nov. 2004 à 21:42
dsl je ne peux pas tester...
0
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
16 nov. 2004 à 22:35
SB01 as-tu tester mon bout de code?
0
Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008
17 nov. 2004 à 17:34
chimelpremier j'ai testé ton code et cette fois il me renvoie la hauteur du calque ( c'est à dire 400 ) mais toujours pas la hauteur de la page !!!!
J'ai testé le même code avec document.body.clientWidth à la place de document.body.clientHeight et là ça me renvoie bien la largeur de la page et pas celle du calque.

Y'a un mystère quelque part là ....

coucou747 l'idéal ça serait que mon code marche pour la plupart des navigateurs donc si tu as des solutions pour d'autres navigateurs je suis preneur :)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
17 nov. 2004 à 17:48
en fait t'as une solution tout navigateur
masi c'ets plus une ruse qu'une solution...

il faut mettre un div tout en bas et récupèrer ton ordonée...
0
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
17 nov. 2004 à 22:39
SB01 donc tu n'a plus 0, et tu as en partie raison le calque ne sert à rien :

cliques ici, redimensionne ta fenêtre en hauteur et cliques de nouveau, normalement, si tu as IE comme navigateur, tu dois obtenir la hauteur interne de ta page sinon ya un blème

Pour les variantes navigateur à ce sujet, l'oiseau quadriréacteur a raison, il n'y en a que 2 : IE et Gecko
0
Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008
17 nov. 2004 à 23:29
Bon bah y'a un problème quelque part. Avec ton nouveau code ça me renvoie juste la hauteur du texte ( environ 40 ) mais toujours pas la hauteur de la page ........ :'(
Je sais pas si c'est un problème de mon navigateur ou si la propriété utilisée n'est pas la bonne mais en tout cas ça marche toujours pas.
J'ai essayé toute les fonctions que je connaissais et j'en ai pas trouvée une qui me donne la hauteur de la page (alors que pour la largeur ça marche bien) .....

Si quelqu'un a une ultime solution avant que j'abandonne ? :)
0
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
18 nov. 2004 à 12:35
Tu as quel système d'exploitation ? On vois passer des messages concernant XP SP2 en ce moment !
0
Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008
18 nov. 2004 à 13:28
j'ai XP mais sans le SP2
0
Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008
18 nov. 2004 à 14:42
ça y est j'ai trouvé !!!!!!!!!

Donc pour avoir la hauteur et la largeur de la page sans l'habillage du navigateur, il faut utiliser :

- pour internet explorer :
document.body.parentNode.clientWidth
document.body.parentNode.clientHeight

- pour les autres navigateurs :
window.innerWidth
window.innerHeight

merci à chimelpremier et à coucou747 :)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
18 nov. 2004 à 18:25
euh non, il n'y a pas que gecko et IE il y a aussi Konqueror, et je ne sais pas si netscape et opéra utilisent gecko, il y a lynx aussi...

bientot Konqueror adoptera gecko, et les autres navigateurs sont très peu utilisé, un y a environ 99% des personnes qui utilisent gecko ou IE...
0
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
18 nov. 2004 à 23:20
Netscape 6 & +, Mozilla1 & +, Fire fox reconnaissent la syntaxe Gecko pour Event
Opera : les 2 syntaxes
Konqueror je pense Gecko mais je ne connais pas, j'ai pas LINUX

SB01, le fil n'est pas terminé : je pense que tu nous as caché le Doctype avec une adresse DTD en tête de ta page et dans ce cas IE reconnais document.documentElement.clientHeight

Je mentionne les 3 syntaxes dans mes sources
0
Sb01 Messages postés 16 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 2 novembre 2008
19 nov. 2004 à 11:31
En effet chimelpremier j'ai bien un Doctype en tête de ma page mais je ne sais pas du tout à quoi ça sert en fait. Voilà ce qui est écrit :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Est ce que je dois laisser cette ligne ou est ce qu'il vaut mieux que je l'enlève ?

Encore une autre question, j'ai testé mon code avec Firefox et Konqueror et dans les deux cas les propriétés suivantes ne marchent plus :
document.getElementById().style.posWidth
document.getElementById().style.posHeight
document.getElementById().style.posLeft
document.getElementById().style.posTop

Elles me renvoient à chaque fois undefined.
Est ce que c'est lié à l'histoire du Doctype ou bien est ce parce que ces propriété ne sont pas reconnues par les navigateurs ?
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
19 nov. 2004 à 17:59
ocument.getElementById().style.Left
document.getElementById().style.Top

ça ça fonctionne

sinon Konqueror != gecko !!!

Konqueror risque d'adopter bientot gecko mais c'ets pas pour tout de suite... pour le moment c'ets un moteur perso...
0
Rejoignez-nous