2010-06-10 2 views
29

Cela me frustre. Cela devrait être quelque chose de très simple mais je n'arrive pas à le faire fonctionner dans IE. Je veux obtenir la hauteur de la fenêtre actuelle: Pas la hauteur de défilement, pas la hauteur du document, mais la hauteur réelle de la fenêtre. J'ai essayé window.innerHeight qui renvoie undefined et document.documentElement.clientHeight qui donne la hauteur de défilement.Obtenez la hauteur de la fenêtre

Répondre

68

Pour IE 8 et inférieure, utilisez

document.documentElement.offsetHeight; 

navigateur transversa- devrait être:

var height = "innerHeight" in window 
       ? window.innerHeight 
       : document.documentElement.offsetHeight; 
+1

Andy, Flippen Ay homme, cela fonctionne, merci –

+0

Je suis ajoutant que 'window.innerHeight' est pour IE9 + – vsync

+0

J'utilise avec succès cette technique dans une page basée sur un cadre sous IE 8/9/10 et Firefox aussi bien. Thankyou –

1

http://www.javascripter.net/faq/browserw.htm

Notez que le code qui utilise document.body.offsetWidth et document.body.offsetHeight doit être exécuté après que le navigateur a analysé la balise.

Mise à jour: Essayez cette

<script type="text/javascript"> 
<!-- 

var viewportwidth; 
var viewportheight; 

// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight 

if (typeof window.innerWidth != 'undefined') 
{ 
     viewportwidth = window.innerWidth, 
     viewportheight = window.innerHeight 
} 

// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document) 

else if (typeof document.documentElement != 'undefined' 
    && typeof document.documentElement.clientWidth != 
    'undefined' && document.documentElement.clientWidth != 0) 
{ 
     viewportwidth = document.documentElement.clientWidth, 
     viewportheight = document.documentElement.clientHeight 
} 

// older versions of IE 

else 
{ 
     viewportwidth = document.getElementsByTagName('body')[0].clientWidth, 
     viewportheight = document.getElementsByTagName('body')[0].clientHeight 
} 
document.write('<p>Your viewport width is '+viewportwidth+'x'+viewportheight+'</p>'); 
//--> 
</script> 

Trouvé here

+0

Nope, ne fonctionne pas, donne la hauteur de défilement –

+0

@YO Momma: vous pouvez utiliser le code suivant 'myWidth = screen.availWidth; myHeight = screen.availHeight; 'cela fonctionne dans tous les navigateurs. une chose est que window.innerheight ne supporte pas dans IE – Raje

5

J'utilise:

doc = document; 
var theHeight = Math.max(
    doc.body.scrollHeight, doc.documentElement.scrollHeight, 
    doc.body.offsetHeight, doc.documentElement.offsetHeight, 
    doc.body.clientHeight, doc.documentElement.clientHeight 
); 

Je l'ai trouvé ici: Get document height (cross-browser) - James Padolsey

Et aussi trouvé que jQuery fait la même chose:

// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest 
// unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it. 
return Math.max(
    elem.body[ "scroll" + name ], doc[ "scroll" + name ], 
    elem.body[ "offset" + name ], doc[ "offset" + name ], 
    doc[ "client" + name ] 
); 
+0

Trompeur. Puisque 'scrollHeight' donne [hauteur du contenu d'un élément, y compris le contenu non visible à l'écran] (https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight), le code donne * * hauteur du document **. Pourtant, la question était d'obtenir ** hauteur de la fenêtre **. – Lightman

Questions connexes