IE7中的scrollHeight返回不正确的值,除非在使用前特别引用

时间:2011-10-27 14:32:09

标签: javascript css

我一直在研究MooTools的Accordion类,它更适合我需要的东西,但是注意到在IE7中(我仍然需要支持),element.scrollHeight返回一个不正确的值,除非我之前特别引用它使用它。例如,我有一个带有“容器”和“折叠”类的元素。以下隐藏在页面中的样式:

.container {
    overflow: hidden;
}

/* removed when made visible */
.collapsed {
    left: -9999em;
    position: absolute;
    top: 0px;
}

当我需要显示此元素时,我删除该类,并计算其scrollHeight。在大多数浏览器中,这很好用。但是,在IE7中,以下代码返回的高度明显小于元素的实际scrollHeight:

// remove the collapsed class
elem.removeClass('collapsed');

alert(elem.scrollHeight); // consistently '69px' across all accordion folds

但是,如果我首先引用elem.scrollHeight,则提醒的scrollHeight是正确的:

// remove the collapsed class
elem.removeClass('collapsed');

if (elem.scrollHeight) alert(elem.scrollHeight); // the scrollHeight is correct

IE7是否只需要额外的几毫秒来正确重新计算元素的scrollHeight,或者还有其他什么东西可以使用?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

See this table.

  

当元素没有滚动条时,IE会生成scrollHeight   等于内容的实际高度;而不是高度   元件。 scrollWidth是正确的,除了在IE8中,它是5像素   关闭。

并且对于ie5-7,scrollHeight标记为“不正确”。 也许它适用于offsetHeight?或者从其他属性以某种方式计算它?

here也提到......

  

无论你做什么,在IE中访问属性不是在身体的负载之前   已经解雇了,否则你会得到奇怪的结果。