javascript - 在 JS 中获取页面高度(跨浏览器)

标签 javascript

在跨浏览器兼容的 JS 中获取实际页面(而非窗口)高度的最佳方法是什么?

我见过几种方法,但它们都返回不同的值...

self.innerHeight 要么 document.documentElement.clientHeight 要么 document.body.clientHeight 还是别的?

一种似乎可行的方法是:

var body = document.body,
    html = document.documentElement;

var height = Math.max( body.scrollHeight, body.offsetHeight, 
                       html.clientHeight, html.scrollHeight, html.offsetHeight );

最佳答案

页面/文档高度目前受制于 vendor (IE/Moz/Apple/...) 实现,并且没有跨浏览器的标准和一致的结果。

查看 JQuery .height() 方法;

if ( jQuery.isWindow( elem ) ) {
            // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
            // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
            var docElemProp = elem.document.documentElement[ "client" + name ],
                body = elem.document.body;
            return elem.document.compatMode === "CSS1Compat" && docElemProp ||
                body && body[ "client" + name ] || docElemProp;

        // Get document width or height
        } else if ( elem.nodeType === 9 ) {
            // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
            return Math.max(
                elem.documentElement["client" + name],
                elem.body["scroll" + name], elem.documentElement["scroll" + name],
                elem.body["offset" + name], elem.documentElement["offset" + name]
            );

nodeType === 9 表示 DOCUMENT_NODE : http://www.javascriptkit.com/domref/nodetype.shtml 所以没有 JQuery 代码解决方案应该是这样的:

var height = Math.max(
                    elem.documentElement.clientHeight,
                    elem.body.scrollHeight, elem.documentElement.scrollHeight,
                    elem.body.offsetHeight, elem.documentElement.offsetHeight)

关于javascript - 在 JS 中获取页面高度(跨浏览器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9430070/

相关文章:

javascript - 我可以从 Javascript 方法中找出谁\哪个 DOM 元素调用了我吗?

javascript - 展开/折叠表格行 Javascript 工作错误

javascript - 如何使用 JavaScript 包装动态创建的图像元素

javascript - 无法将一个 Svelte 组件导入到另一个组件中

javascript - 从表中选择一个单元格并为其指定唯一的类

javascript - 在React控制组件中清除datalist输入onClick

javascript - 计算具有边长的正四面体的体积

javascript - Azure 计算机视觉 : Recognize Printed Text

javascript - 尝试使用 JWT 创建登录时出现 "not a function"错误

javascript - 改变函数的作用域