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.

War es hilfreich?

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)
    );
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top