Domanda

Mozilla e IE sviluppatori sembrano avere contemporaneamente cambiato l'attuazione dei loro elementi di altezza per rappresentare l'attuazione Opera ... che in precedenza non ho dovuto preoccuparsi.

var height = (document.height !== undefined) ? document.height : document.body.offsetHeight;

Quando eseguito su un documento vuoto ora ritorna 0 come l'altezza del documento. La mia applicazione richiede la conoscenza della vera finestra del client per costruire dinamicamente. Chrome e Safari sono ancora agiscono come in passato.

scrollHeight e clientHeight agiscono esattamente lo stesso.

A complicare le cose document.height e document.body.offsetHeight sono ora in corso anche l'intera altezza del documento in considerazione, invece di solo l'area visualizzabile come si usava ... ho provato un vecchio metodo di spaziatura tavolo e usato un 2000px x 1px trasparente eil documento altezza è impostata a 2000 ora .... naturalmente Chrome e Safari funzionano ancora come previsto e solo dare la dimensione visibile.

Sono molto disperata per risolvere questo problema.

È stato utile?

Soluzione

L'altezza finestra non è una proprietà del documento, ma della finestra di visualizzazione. È possibile ottenere l'altezza finestra da window.innerHeight.

La roba con document è necessaria solo come ripiego per IE, che non fornisce le dimensioni window.inner. IE (tecnicamente in modo non corretto) rende il document.documentElement rappresentano la finestra, in modo da poter ottenere l'altezza dalla sua clientHeight, a meno che non siete in quirks mode che (più in modo non corretto) rende document.body rappresentano la finestra invece. (document.height è totalmente non standard;. Evitarlo)

Quindi, in sintesi, e supponendo che è necessario supportare quirks mode (speriamo non lo fai):

var height= (
    'innerHeight' in window? window.innerHeight :
    document.compatMode!=='BackCompat'? document.documentElement.clientHeight :
    document.body.clientHeight
);

Altri suggerimenti

Io uso questo, che ho ottenuto dal sito di James Paldosey :

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)
    );
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top