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仍然按预期工作,只提供可视尺寸。
我非常渴望解决这个问题。
答案 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)
);
}