真正跨浏览器获取文档高度的方法

Truly cross-browser way to get document height?

本文关键字:高度 方法 文档 获取 浏览器      更新时间:2023-09-26

我有一个控件包含在我的ASP页面上的iframe。. NET web应用程序。控件根据用户在其上选择的内容相应地改变其垂直大小(有些元素进入,有些元素退出)。所以,我必须精确地设置iframe的大小来显示整个控件,而不是在iframe和它下面的元素之间制造间隙。

在网上的某个地方,我发现了一种以跨浏览器的方式获取文档高度的方法:

        function getDocHeight(document) {
        return Math.max(
            Math.max(document.body.scrollHeight, document.documentElement.scrollHeight),
            Math.max(document.body.offsetHeight, document.documentElement.offsetHeight),
            Math.max(document.body.clientHeight, document.documentElement.clientHeight)
        );
    }

控件页上的self.document.body.onload,因此,我调用这个函数:

        function adjustIframeHeight() {
        var iframe = window.parent.document.getElementById(window.frameElement.id);
        var iframeHeight = getDocHeight(iframe.contentWindow.document);
        iframe.style.height = iframeHeight + "px";
    }

问题是它在Firefox中工作得很好,但在某些情况下,控件的底部部分在Chrome和IE中被切断。

是否有一些真正的跨浏览器的方式来获得这个高度,或者我做错了什么?感谢您的宝贵时间

我会使用像jQuery这样的东西来帮助解决这个问题(因为使用高度方法似乎因浏览器而异),这里是一些可以帮助的jQuery代码:

$(document).height(); // height of HTML doc