javascript文档高度复杂性

javascript文档高度复杂性,javascript,javascript-objects,Javascript,Javascript Objects,Mozilla&IE开发人员似乎同时更改了高度元素的实现,以表示Opera实现。。。这是我以前不必担心的 var height = (document.height !== undefined) ? document.height : document.body.offsetHeight; 在空白文档上执行时,现在返回0作为文档的高度。我的实现需要了解真正的客户机视口才能动态构建。Chrome和Safari仍像过去一样发挥作用 scrollHeight和clientHeight的作用完全相同

Mozilla&IE开发人员似乎同时更改了高度元素的实现,以表示Opera实现。。。这是我以前不必担心的

var height = (document.height !== undefined) ? document.height : document.body.offsetHeight;
在空白文档上执行时,现在返回0作为文档的高度。我的实现需要了解真正的客户机视口才能动态构建。Chrome和Safari仍像过去一样发挥作用

scrollHeight和clientHeight的作用完全相同

使问题复杂化的是,document.height和document.body.offseight现在还考虑了文档的全高,而不是像过去那样只考虑可视区域。。。我尝试了一种旧的表格间距方法,并使用了2000px x 1px透明,现在文档高度设置为2000。。。。当然,Chrome和Safari仍能按预期工作,只提供可视尺寸


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

我使用这个,我从以下方面得到:


我使用这个,我从:


视口高度不是文档的属性,而是查看文档的窗口的属性。您可以从
窗口.innerHeight
获取视口高度

带有
document
的东西只需要作为IE的后备,IE不提供
窗口。内部
维度。IE(技术上不正确)使
document.documentElement
表示视口,因此可以从其
clientHeight
获取高度,除非您处于怪癖模式(更不正确)使
document.body
表示视口。(
document.height
完全是非标准的,避免使用。)

总之,假设您需要支持怪癖模式(希望您不支持):


视口高度不是文档的属性,而是查看文档的窗口的属性。您可以从
窗口.innerHeight
获取视口高度

带有
document
的东西只需要作为IE的后备,IE不提供
窗口。内部
维度。IE(技术上不正确)使
document.documentElement
表示视口,因此可以从其
clientHeight
获取高度,除非您处于怪癖模式(更不正确)使
document.body
表示视口。(
document.height
完全是非标准的,避免使用。)

总之,假设您需要支持怪癖模式(希望您不支持):


不再适用于空白文档,所有这些文档都返回当前文档长度,该长度现在从0开始。我需要空白文档上的可视区域。实际上jQuery就是这样做的():“滚动[Width/Height]或偏移[Width/Height]或客户端[Width/Height],取最大值。不幸的是,这只会导致IE6/8中的bug#3838,但目前没有好的小方法来修复它。”不再适用于空白文档,所有这些都返回当前文档长度,该长度现在从0开始。我需要空白文档上的可视区域。实际上jQuery就是这样做的():“滚动[Width/Height]或偏移[Width/Height]或客户端[Width/Height],以最大的为准。不幸的是,这只会导致IE6/8中的bug#3838,但目前没有好的小方法来修复它。”
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)
    );
}
var height= (
    'innerHeight' in window? window.innerHeight :
    document.compatMode!=='BackCompat'? document.documentElement.clientHeight :
    document.body.clientHeight
);