javascript文档高度复杂性
Mozilla&IE开发人员似乎同时更改了高度元素的实现,以表示Opera实现。。。这是我以前不必担心的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的作用完全相同
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
);