2010-11-03 3 views
1

je la page Web suivante:

Une page web grand avec seulement une barre de défilement vertical et horizontal sans barre de défilement. Le document et la fenêtre ont donc la même largeur.

Lorsque je demande IE8 pour $(document).width(), il renvoie la largeur de la fenêtre, y compris la barre de défilement verticale. FF renvoie la bonne réponse. Pour cette raison, je ne peux pas utiliser $('body'), car il renvoie la même largeur que l'objet fenêtre (il est défini à 100% en quelque sorte, donc cela ne fonctionne pas lorsque la page est plus petite).

Comment puis-je faire de la sortie IE8 la bonne valeur? Merci d'avance.

MISE À JOUR

En fait, je fait quelques tests plus à mon problème. et j'ai trouvé que lorsque la barre de défilement horizontale devient visible aussi (à cause d'une fenêtre plus petite), IE8 obtient la bonne taille. Donc, cela rend mon problème encore plus compliqué parce que je ne peux pas mettre un if(IE8) -hack laid.

MAJ2

Le problème réside dans mon CSS et jQuery. Le cas réel semble être le problème: Mon dit css:

body 
{ 
    overflow-y:scroll; 
} 

IE8 ne compte pas dans le cadre du corps, mais IE7 fait. Comment régler ceci? Appelez jQuery pour un correctif?

+0

duplication possible de [clientHeight/clientWidth renvoyant des valeurs différentes sur différents navigateurs] (http://stackoverflow.com/questions/833699/clientheight-clientwidth-returning-different-values-on-different-browsers) –

+0

La réponse de le message ci-dessus est: utilisez jQuery. Ce qui ne résout pas mon problème pour le moment. – Marnix

+0

J'ai ajouté un ticket à jQuery. J'espère qu'ils peuvent réparer celui-ci pour moi. – Marnix

Répondre

1

J'ai posé ce problème à l'équipe de jQuery: http://bugs.jquery.com/ticket/8048.

Ils ne pensent pas que c'est un bug. Leur conseil est d'utiliser $('body').width(). Et cela fait effectivement le travail pour moi.

Je trouve toujours étrange que le corps dans IE8 soit ajusté à la barre de défilement, mais le $(document).width() reste le même. J'ai utilisé ce jsFiddle pour tester. Il en résulte le même problème, mais jQuery pense que c'est bon, parce que le W3C ne dit rien à ce sujet ... Ou quelque chose comme ça.