1

Mozilla と IE の開発者は、高さ要素の実装を Opera の実装に合わせて同時に変更したようです... 以前は心配する必要はありませんでした。

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

空白のドキュメントで実行すると、ドキュメントの高さとして 0 が返されるようになりました。私の実装では、動的に構築するための真のクライアント ビューポートを知る必要があります。Chrome と Safari は、以前と同じように機能しています。

scrollHeight と clientHeight はまったく同じように動作します。

問題を複雑にするために、 document.height と document.body.offsetHeight は、以前のように表示可能な領域だけでなく、ドキュメントの全高も考慮に入れています... 古いテーブル間隔方法を試し、2000px x 1px を使用しました透明で、ドキュメントの高さが 2000 に設定されています....当然ながら、Chrome と Safari は引き続き期待どおりに機能し、表示可能なサイズしか表示されません。

私はこの問題を解決するために非常に必死です。

4

2 に答える 2

5

ビューポートの高さはドキュメントのプロパティではなく、ドキュメントを表示しているウィンドウのプロパティです。からビューポートの高さを取得しwindow.innerHeightます。

のものは、ディメンションdocumentを提供しない IE のフォールバックとしてのみ必要です。window.innerIE は (技術的には間違って) をdocument.documentElementビューポートとして表現するため、その から高さを取得できclientHeightますdocument.body。(document.height完全に非標準です。避けてください。)

要約すると、Quirks モードをサポートする必要があると仮定します (サポートしないことを願います):

var height= (
    'innerHeight' in window? window.innerHeight :
    document.compatMode!=='BackCompat'? document.documentElement.clientHeight :
    document.body.clientHeight
);
于 2010-01-28T21:02:27.403 に答える
1

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)
    );
}
于 2010-01-28T20:11:01.047 に答える