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.inner尺寸。IE(技术上不正确)使document.documentElement表示视口,因此您可以从它的高度获得高度clientHeight,除非您处于 Quirks 模式(更不正确)使document.body表示视口。(document.height完全不标准;避免它。)

总而言之,假设您需要支持 Quirks Mode(希望您不要):

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 回答