【发布时间】:2012-09-17 16:28:31
【问题描述】:
所以我有一个调整大小处理程序,它根据右侧是否有滚动(溢出与不溢出)来调整某些列标题的大小,以调整间距以考虑滚动。当我改变框架的大小以使框架溢出而不是溢出时,调整大小起作用。但是,当我以某种不影响帧大小的方式修改列时,我仍然需要调整大小,但调整大小会出错。这是我拥有的调整大小的 sn-p 的伪代码。
if (display != "none") {
if (frame.offsetHeight >= frame.scrollHeight) {
display = "none"
}
} else {
if (frame.offsetHeight < frame.scrollHeight) {
display = ""
}
}
所以问题是,在帧大小不变的情况下调用resize处理程序,在FF、Chrome和Safari中,scrollHeight比frame.offsetHeight多1(即如果offsetHeight是100px,@ 987654324@实际上是101px),但是在IE中,offsetHeight和scrollHeight是一样的,从而导致display == ""和frame.offsetHeight < frame.scrollHeight的条件失效。 IE 和其他浏览器的这些属性处理方式是否不同?
【问题讨论】:
-
对所有浏览器问题的简短回答:不要使用 IE。
-
或者,使用jQuery并支持所有浏览器,包括IE
-
永远不要相信 IE 会做任何正确的事情。
-
我仍然想让它工作。我现在已经进一步缩小了问题的范围。它不仅仅是 1 px,这是一个具体的例子。所以出现的问题是,如果发生溢出,IE 的 scrollheight 和 offsetheight 将是相同的。假设我在 div 中有 400px 的元素。我将框架缩小到 200px 高度。在非 IE 中,scrollHeight == 400 和 offsetHeight == 200。但是在 IE 中,scrollHeight == offsetHeight == 200 :(
标签: javascript css scroll overflow frame