JavaScript Höhe des Anzeigebereiches bestimmen

DaPhreak

Primus inter pares
ID: 30143
L
8 Mai 2006
2.418
295
Hey,

Ich möchte per JavaScript die Höhe des aktuellen Anzeigebereichs des Browsers bestimmen. Dazu soll nur der wirklich angezeigte Teil gerechnet werden, scrollt die Seite also nach unten, nicht die volle Seitenhöhe, sondern nur den Teil, den man gerade sieht halt.

Im FF/Opera geht das ganz wunderbar über

Code:
window.innerHeight

Probleme bereitet, mal wieder, nur der Internet-Explorer. Oben benanntes Attribut implementiert er gar nicht. Probiert habe ich mittlerweile:

Code:
document.body.clientHeight
Code:
document.body.offsetHeight
Code:
document.body.scrollHeight

Alle drei liefern jedoch den gleichen Wert und das ist die Gesamthöhe des Browserinhaltes, also nicht nur der Teil den man gerade sieht. Ich könnte natürlich window.height nehmen, nur weiß ich ja nun wieder nicht, wieviel ich da abziehen muss für Titelleisten etc.

Gibt's noch ein anderes Attribut was ich probieren kann? Ich hab's noch nicht geschafft, mir ein anderes zu ergooglen.

Getestet habe ich mit IE7 und IE8, da war das Verhalten identisch.
 
naja, geh nen Umweg. Erstell ein Div, das top:0 und Bottom:0; hat, und lies davon die höhe aus, das müßte dann mit clientheight gehen oder!?
 
naja, geh nen Umweg. Erstell ein Div, das top:0 und Bottom:0; hat, und lies davon die höhe aus, das müßte dann mit clientheight gehen oder!?

Ah okay, gute Idee eigentlich. Werd ich mal probieren.

*edit* Scheint auch nicht zu gehen, der IE füllt das div dann wieder über die gesamte Seitenhöhe, nicht nur über den Teil den man grade im Scrollausschnitt sieht. Damit bekomme ich wieder die gleiche Zahl die ich doch gar nicht haben will... :ugly:
 
Zuletzt bearbeitet:
Ah, viewport, das war genau das richtige Stichwort was mir nicht eingefallen ist. Das Script sieht super aus, werd es nachher gleich mal testen. Danke schonmal!


*edit* Funktioniert bestens, vielen Dank! Das einzige was nicht ganz stimmt ist, dass der IE7/8 genauso wie FF/Opera mit dem ersten Fall "innerWidth" erschlagen werden kann. Der IE8 verzweigt definitiv in den zweiten Fall, der im Script mit "// IE6 in standards compliant mode" beschriftet ist. Ist ja auch egal, geht jedenfalls. Super!
 
Zuletzt bearbeitet: