Javascript Dokumentenhöhe Komplikationen
-
23-09-2019 - |
Frage
Mozilla & IE-Entwickler scheinen gleichzeitig die Umsetzung ihrer Höhe Elemente geändert haben die Opera Umsetzung zu vertreten ..., die ich vorher nicht zu befürchten hatte.
var height = (document.height !== undefined) ? document.height : document.body.offsetHeight;
Wenn auf einem leeren Dokument ausgeführt kehrt nun 0 als die Höhe des Dokuments. Meine Implementierung erfordert die Kenntnis der wahren Client-Ansichtsfenster, um dynamisch aufbauen. Chrome und Safari wirken noch wie früher.
Scrollheight und client handeln genau das gleiche.
Erschwerend kommt document.height und document.body.offsetHeight sind jetzt auch die volle Höhe des Dokuments zu berücksichtigen, anstatt nur den sichtbaren Bereich wie früher ... ich einen alten Tisch Abstand Methode versucht und verwendet, um eine 2000px x 1px transparent undder Dokumentenhöhe jetzt auf 2000 gesetzt .... natürlich Chrome und Safari noch wie erwartet und nur die sichtbare Größe geben.
Ich bin sehr verzweifelt um dieses Problem zu beheben.
Lösung
Die Darstellungshöhe ist keine Eigenschaft des Dokuments, sondern aus dem Fenster es sehen. Sie erhalten die Darstellungshöhe von window.innerHeight
.
Das Zeug mit document
ist nur als Ausweich für IE benötigt, die nicht die window.inner
Dimensionen bietet. IE (technisch falsch) macht die document.documentElement
das Ansichtsfenster darstellen, so dass Sie die Höhe von seinem clientHeight
bekommen können, es sei denn, Sie in Quirks-Modus sind die (mehr falsch), statt das Ansichtsfenster document.body
darstellen macht. (document.height
ist völlig nicht-Standard;. Es vermeiden)
Also zusammenfassend, und unter der Annahme, müssen Sie Quirks-Modus unterstützen (hoffen wir, dass Sie dies nicht tun):
var height= (
'innerHeight' in window? window.innerHeight :
document.compatMode!=='BackCompat'? document.documentElement.clientHeight :
document.body.clientHeight
);
Andere Tipps
ich diese, dass ich von James Paldosey Website
function getDocHeight() {
//utility function to find dimensions of page
var D = document;
return Math.max(
Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
Math.max(D.body.clientHeight, D.documentElement.clientHeight)
);
}