确定最大可能的DIV高度

是否有推荐的方法来确定DIV可以设置的最大高度,并保持每个浏览器可见? 这似乎没有logging在任何地方,并且具有很高的实施特定性。

例如,请参阅以下testing脚本:

http://jsfiddle.net/NP5Pa/2/

这是一个简单的testing,可以在元素的相应clientHeight变为0之前find最大值,您可以设置DIV样式高度属性。您可以通过单击“查找最大值”然后将find的高度增加1并单击“设置高度”。

一些例子(Win7 / 64):

 Chrome (14.0) : 134,217,726 px Safari (5.1) : 134,217,726 px IE (9.0) : 10,737,418 px FF (7.0.1) : 17,895,697 px 

WebKit产生相同的结果并不令人惊讶,我想 – 更令人惊讶的是,IE和FF是如此不同。

有没有更好的办法? 你在32位系统中得到不同的结果吗?

– EDIT:更新小提琴停止在10,000,000,000(并更快)为Opera。 这是很多像素。

这是你的代码,修改为使用二进制search(所以它更快)。

http://jsfiddle.net/thai/zkuGv/4/

它从1像素开始,倍增大小,直到它达到最大(我使用2 53 ,这是最大的整数,可以存储在JavaScript中,没有损失的精度,并会使二进制search越野车),或股利崩溃为零像素。

假设我们将div设置为h并消失,那么最大大小必须介于h / 2和h之间 。 我们从那里进行二分法search的高度h不会让div在设置为高度h时消失,但在设置为h +1时消失。

那么我们可以得出Opera的结论:2147483583像素。

我想知道如果这个问题是相关的,如果你设置正文,html的高度为100%,以便默认文档是视口的高度,所以如果你设置它的div的最大高度将是视口的高度到100%的高度。 只是一个想法…

这里试试这个: http : //jsfiddle.net/serkanyersen/yNfuX/

这将尊重父母的填充和保证金属性。 当你点击最大化button时,DIV将展开到最可用的空间。 我相信你可以根据你的需要进行转换。

它实际上需要recursion,从本身开始到最顶层,但是我没有时间去实现它。

注意:尝试调整页面大小,并取消父DIV的注释以使其完全正常工作。