javascript文件高度并发症

时间:2010-01-28 19:57:40

标签: javascript javascript-objects

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仍然按预期工作,只提供可视尺寸。

我非常渴望解决这个问题。

2 个答案:

答案 0 :(得分:5)

视口高度不是文档的属性,而是查看它的窗口的属性。您从window.innerHeight获得视口高度。

document的内容只需要作为IE的后备,而不提供window.inner维度。 IE(技术上不正确)使document.documentElement代表视口,因此您可以从clientHeight获得高度,除非您处于Quirks模式(更错误地)使document.body代表视口而不是。 (document.height完全不标准;避免使用它。)

总而言之,假设您需要支持Quirks模式(我们希望您不要):

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

答案 1 :(得分:1)

我使用这个,我来自James Paldosey's site

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)
    );
}