有人知道如何计算文档维度,而不是Javascript中的视口吗?

有人知道如何计算文档维度,而不是Javascript中的视口吗?,javascript,xhtml,cross-browser,Javascript,Xhtml,Cross Browser,为了确保每个人都理解我的要求,我将详细介绍文档、窗口和视口之间的基本区别 窗口是整个浏览器窗口,包括所有导航栏等 VIEWPORT是用于查看当前XHTML/HTML/Flash文档的窗口部分 文档是实际的内容区域,类似于正文,但包含页面的所有内容。在视口中,任何时候都只能看到其中的一部分(除非页面大小与视口相同或小于视口) 现在,关于如何获取视口尺寸,有很多很好的答案。我已经很精通这个。。。跨浏览器和所有 我真正需要知道的是一个简单的跨浏览器解决方案,它将为我提供所有浏览器中实际文档的尺寸(没有

为了确保每个人都理解我的要求,我将详细介绍文档、窗口和视口之间的基本区别

窗口是整个浏览器窗口,包括所有导航栏等

VIEWPORT是用于查看当前XHTML/HTML/Flash文档的窗口部分

文档是实际的内容区域,类似于正文,但包含页面的所有内容。在视口中,任何时候都只能看到其中的一部分(除非页面大小与视口相同或小于视口)

现在,关于如何获取视口尺寸,有很多很好的答案。我已经很精通这个。。。跨浏览器和所有

我真正需要知道的是一个简单的跨浏览器解决方案,它将为我提供所有浏览器中实际文档的尺寸(没有超过3年的版本)

我想我曾经在这里找到了一个很好的解决办法。。。很久以前。。。但是现在我找不到了

有人吗?谢谢你的阅读,希望有人能帮忙

另外,我有没有提到我不需要计算视口的解决方案?还是窗户

更新:此解决方案必须适用于Opera10.x、FireFox 3.6.x、IE 7/8/x、Flock 2.x、Safari 4.x。。。下面的答案都不能在所有浏览器中使用


因此,如果您没有对其进行全面测试,请不要回答这个问题。

我认为如果您将所有内容包装到一个无边框、无填充和无边距的DIV元素中,那么当浏览器完成渲染时,您可以使用它来查询包装DIV的实际高度


我以前做过这件事,我发现我在使用各种浏览器时遇到了一些特殊的问题。您可能不会遇到我遇到的那些问题,但我最终解决了这个问题。

document.body.scrollHeight和document.body.scrollWidth


我应该把它给你

我从jQuery的源代码中偷了这个,并在它周围做了一个包装:

编辑:重构函数,使其在数组中同时返回宽度和高度

function getDocumentDimensions() {
    var d = document;
    return [
        Math.max(
            d.documentElement['clientHeight'],
            d.body['scrollHeight'],
            d.body['offsetHeight']
        ),
        Math.max(
            d.documentElement['clientWidth'],
            d.body['scrollWidth'],
            d.body['offsetWidth']
        )
     ]
};

getDocumentDimensions() // [1284, 1265]

这个jQuery应该是
$(document).height()
和width.

对不起,这些答案都不是我想要的。最后,我决定在Prototype中继续使用document.body.getWidth()和document.body.getHeight()。

我们也有类似的需求,并使用这段代码。它没有在opera/flock中测试,但我们涵盖了所有其他浏览器。请注意,它并不总是非常完美,但在99%以上的情况下都能做到这一点

function getContentWidthHeight() {
    var pageWidth = 0; 
    var pageHeight = 0;

    if (window.innerHeight && window.scrollMaxY) {
        pageWidth = window.innerWidth + window.scrollMaxX;
        pageHeight = window.innerHeight + window.scrollMaxY;
    } 
    if (document.body.scrollHeight) {
        pageWidth = Math.max(pageWidth, document.body.scrollWidth);
        pageHeight = Math.max(pageHeight, document.body.scrollHeight);
    }
    if (document.body.offsetHeight) {
        pageWidth = Math.max(pageWidth, document.body.offsetWidth);
        pageHeight = Math.max(pageHeight, document.body.offsetHeight);
    }
    if (document.documentElement.offsetHeight) {
        pageWidth = Math.max(pageWidth, document.documentElement.offsetWidth);
        pageHeight = Math.max(pageHeight, document.documentElement.offsetHeight);
    }
    if (document.documentElement.scrollHeight) {
        pageWidth = Math.max(pageWidth, document.documentElement.scrollWidth);
        pageHeight = Math.max(pageHeight, document.documentElement.scrollHeight);
    }
    return [ pageWidth, pageHeight ];
};

所以您需要视口尺寸,对吗?:)谢谢你的幽默感。。。你会惊讶于那些在没有完全理解问题的情况下发布问题答案的人…:-Ouse.outerHeight(真)如果您想测量高度,包括衬垫和边距。()OP根本没有指定
jquery
。这是怎么得到一个提升票的?@meder抱歉,我只是建议,因为OP可能没有考虑jQuery。此外,jQuery还不是JavaScript吗?它只是一个框架/助手库,而不是另一种语言?此外,我不明白他为什么要用一整张唱片来包扎一切。您可以简单地查询文档对象的属性,这有点过分了。我不建议使用jQuery将两个数字相加。我之所以提出这个建议,是因为OP是与DOM交互的,并且因为它很好地平衡了在不同的浏览器中处理普通DOM事情的竞争环境,而这些浏览器处理事情的方式略有不同?document.body.scrollheight/scrollwidth是否不总是返回最大值?我觉得这两种价值观本身就足够了,还是我遗漏了什么?我喜欢这一切的走向。。。但除非我做错了什么,否则我无法让它在Firefox 3.6.x或Opera 10.x中正常工作。在狩猎中效果很好。当然,并不是说我太担心Opera,我只是希望所有浏览器引擎都有一个单一功能的圣杯。。。。无论如何,谢谢你!