Ham*_*ish 39 javascript css browser dom cross-browser
是否有推荐的方法来确定DIV可以设置的最大高度并保持每个浏览器可见?这似乎没有在任何地方记录,并且具有高度特定的实现.
例如,请参阅以下测试脚本:
这是一个简单的测试,可以找到在clientHeight
元素对应的元素变为0 之前可以设置DIV样式高度属性的最大值.您可以通过单击"查找最大值"然后将找到的高度增加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
Run Code Online (Sandbox Code Playgroud)
我猜想,WebKit会产生相同的结果并不奇怪 - 更令人惊讶的是,IE和FF是如此不同.
有没有更好的办法?你在32位系统中获得了不同的结果吗?
--EDIT:更新了小提琴,停在10,000,000,000(并快速到达)Opera.这是很多像素.
Tha*_*hai 12
这是您的代码,修改为使用二进制搜索(因此它更快).
http://jsfiddle.net/thai/zkuGv/4/
它从1像素开始,其大小加倍,直到它达到最大值(我使用2 53,这是可以存储在JavaScript中的最大整数而不会丢失精度并且会使二进制搜索错误),或者div折叠为零像素.
假设我们将div设置为大小为h并且它消失,那么最大大小必须介于h/2和h之间.我们从那里二进制搜索高度h,当设置为高度h时不会使div消失,但是当设置为h + 1 时消失.
然后我们可以得出Opera的结论:2147483583像素.