Comment obtenir la hauteur et la largeur du document sans utiliser jquery


Réponses:


119
var height = document.body.clientHeight;
var width = document.body.clientWidth;

Vérifiez: cet article pour une meilleure explication.


9
Ce n'est pas un navigateur croisé. Vous devriez avoir testé ceci avant de le publier.

12
@Iwazaru Merci de l'avoir signalé. On dirait que cette réponse de 4 ans n'est pas à l'épreuve des balles :)
Damb


Si un site Web a une bordure, cela enlève cette largeur avec cette solution mais pas la solution jQuery. Peu de chances d'être une frontière sur le corps, mais il vaut la peine d'être connu. window.innerWidthrésout ça
BritishSam

Cela renvoie la hauteur de la fenêtre du navigateur (si vous ajustez la hauteur du navigateur, cela change), pas la hauteur du contenu / de la page Web.
Radmation

56

Même le dernier exemple donné sur http://www.howtocreate.co.uk/tutorials/javascript/browserwindow ne fonctionne pas en mode Quirks. Plus facile à trouver que je ne le pensais, cela semble être la solution (extraite du dernier code jquery):

Math.max(
    document.documentElement["clientWidth"],
    document.body["scrollWidth"],
    document.documentElement["scrollWidth"],
    document.body["offsetWidth"],
    document.documentElement["offsetWidth"]
);

remplacez simplement Largeur par "Hauteur" pour obtenir la hauteur.


1
Cela devrait être la bonne réponse. clientWidth n'a pas toujours la bonne valeur.
Wildhammer

problème avec clientWidth est qu'il est visible uniquement. scrollWidth inclut des éléments qui s'échappent de l'écran. du moins, c'est vrai pour mes expériences Chrome en 2019.
StayCool

@StayCool il semble que le jQuery le plus récent utilise toujours cette méthode pour le calcul de la hauteur / largeur du document et donne le même résultat que $(document).width(). Peut-être que vous recherchez quelque chose comme $(window).width()qui en pur JS serait juste document.documentElement["clientWidth"]sur les navigateurs modernes.
Dan

38

Il s'agit d'une solution multi-navigateurs:

var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var h = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

C'est une chose sûre et précise à faire
Nan Zhou

1
cela renvoie la hauteur et la largeur de la fenêtre, pas la hauteur et la largeur du document
Michael

25

Vous devez utiliser getBoundingClientRectcomme cela fonctionne généralement avec un navigateur croisé et vous donne une précision sous-pixel sur le rectangle des limites.

elem.getBoundingClientRect()

1
pour ceux qui s'interrogent sur le support: caniuse.com/#feat=getboundingclientrect
Mike Gleason jr Couturier

cela renvoie une hauteur de 0 lorsque je l'ai utilisé sur document.body
Michael

Probablement parce que votre corps a une hauteur de 0. Si vous ne modifiez pas son type d'affichage, c'est le cas par défaut. Vérifiez-le dans l'inspecteur DOM.
Erik Aigner

11

Obtenez la taille du document sans jQuery

document.documentElement.clientWidth
document.documentElement.clientHeight

Et utilisez ceci si vous avez besoin de la taille de l'écran

screen.width
screen.height

8

Vous pouvez également essayer:

document.body.offsetHeight
document.body.offsetWidth

1
Faites attention de ne pas les utiliser dans des choses comme les événements de redimensionnement de fenêtre. ils doivent calculer la hauteur et la largeur, ce qui prend du temps.
Miles

8

Cela devrait fonctionner pour tous les navigateurs / appareils:

function getActualWidth()
{
    var actualWidth = window.innerWidth ||
                      document.documentElement.clientWidth ||
                      document.body.clientWidth ||
                      document.body.offsetWidth;

    return actualWidth;
}

window.innerWidth est le seul qui est également correct lorsque les outils de développement sont ouverts sur Chrome
Alex


1

Comment connaître très facilement la largeur et la hauteur du document?

en HTML
<span id="hidden_placer" style="position:absolute;right:0;bottom:0;visibility:hidden;"></span>

en javascript

     var c=document.querySelector('#hidden_placer');

     var r=c.getBoundingClientRect();
     r.right=document width
     r.bottom=document height`

Vous pouvez le mettre à jour à chaque événement de redimensionnement de fenêtre, si nécessaire.


0

windowest la fenêtre d'application entière du navigateur. documentest la page Web affichée qui est réellement chargée.

window.innerWidthet window.innerHeightprendra en compte les barres de défilement qui peuvent ne pas être ce que vous voulez.

document.documentElementest la page Web complète sans la barre de défilement supérieure. document.documentElement.clientWidthrenvoie la taille de la largeur du document sans barre de défilement y. document.documentElement.clientHeightrenvoie la taille de la hauteur du document sans la barre de défilement x.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.