113 votes

jquery $(window).height() renvoie la hauteur du document

Je suis sûr qu'il y a une simple erreur que je fais, mais j'alerte simplement $(window).height() et il renvoie la même valeur que $(document).height() .

Je suis sur un MBA 13" et la hauteur de la fenêtre de mes navigateurs, lorsqu'elle est maximisée, se situe entre 780px et 820px (à peu près) mais à chaque fois, elle renvoie une hauteur de fenêtre identique à celle du document. Dans tous les cas, sur le site sur lequel je travaille, la hauteur est supérieure à 1000px.

Qu'est-ce qui se passe ici ?

alert($(window).height());
alert($(document).height());

0 votes

Quel est le navigateur sur lequel vous travaillez ?

0 votes

Ce problème a commencé à apparaître avec jquery-1.8.0, les versions antérieures de jquery le faisaient correctement (même sans le paramètre DOCTYPE).

256voto

Tom Hubbard Points 5961

Sans doctype Chrome indique la même valeur pour les deux appels.

L'ajout d'un doctype strict comme <!DOCTYPE html> fait en sorte que les valeurs fonctionnent comme annoncé.

Le site doctype doit être la balise très première chose dans votre document. Par exemple, vous ne pouvez pas avoir de texte avant, même s'il ne rend rien.

11 votes

FireFox fait également ce rapport à moins que vous n'utilisiez un doctype strict comme <!DOCTYPE HTML>.

0 votes

De plus, un doctype incorrect fait que twitter bootstrap scrollspy agit bizarrement pour la même raison que $(window).height() retourne la hauteur du document.

3 votes

Dans mon cas, j'avais un Response.Write dans mon code derrière sur un site ASP qui produisait un 1 avant tout HTML. Donc mon type de document était correct, mais ce n'était pas la première chose sur la page, techniquement.

26voto

Eduardo Points 431

J'ai eu le même problème, et l'utilisation de ceci l'a résolu.

var w = window.innerWidth;
var h = window.innerHeight;

1 votes

C'est bizarre, j'utilise le bon doctype également. Votre innerheight a réglé mon problème ! Merci

1 votes

Même problème - le doctype était valide et tout. Un peu plus multiplateforme : var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

0 votes

Vraiment régler le problème (et oui, j'ai un doctype - première chose sur chaque page)

2voto

Solomon Closson Points 1127

Voici une question et une réponse à ce sujet : Différence entre screen.availHeight et window.height()

Il y a aussi des photos, pour que vous puissiez voir les différences. J'espère que cela vous aidera.

En gros, $(window).height() vous donne la hauteur maximale à l'intérieur de la fenêtre du navigateur (viewport), et $(document).height() vous donne la hauteur du document à l'intérieur du navigateur. La plupart du temps, elles seront exactement les mêmes, même avec des barres de défilement.

1voto

Xmindz Points 600

Je pense que votre document doit avoir suffisamment d'espace dans la fenêtre pour afficher son contenu. Cela signifie qu'il n'est pas nécessaire de faire défiler la fenêtre vers le bas pour voir une autre partie du document. Dans ce cas, la hauteur du document serait égale à la hauteur de la fenêtre.

0 votes

Le document s'étend en dessous du bas de la fenêtre sur chaque page.

0voto

Gourav Yadav Points 79

Cela fonctionne vraiment si nous utilisons le Doctype sur notre page Web. jquery(window) renverra la hauteur de la fenêtre d'affichage, sinon il renverra la hauteur complète du document.

Définissez la balise suivante en haut de votre page Web : <!DOCTYPE html>

0 votes

Utilisez cette balise en haut de votre page Web : <!DOCTYPE html>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X