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

scrollHeight in IE7 returns incorrect value unless specifically referenced before used

本文关键字:中的 IE7 否则 scrollHeight 返回 不正确 引用      更新时间:2023-09-26

我一直在为MooTools开发一个Accordion类,它更符合我的需要,但我注意到在IE7中(我仍然需要支持),元素。scrollHeight返回一个不正确的值,除非我在使用它之前特别引用它。例如,我有一个类为"container"answers"collapse "的元素&以下是隐藏在页面中的样式:

.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

但是,如果我引用元素。首先,警报scrollHeight是正确的:

// remove the collapsed class
elem.removeClass('collapsed');
if (elem.scrollHeight) alert(elem.scrollHeight); // the scrollHeight is correct

是否IE7只需要额外的几毫秒来正确地重新计算元素的scrollHeight,或者有其他东西在起作用?

谢谢你的帮助!

见下表

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

和scrollHeight标记为'不正确'的ie5-7。也许它会与offsetHeight一起工作?或者根据其他性质来计算?

这里还提到…

无论你做什么,在IE中访问属性,而不是在body的onload之前已经开火了,否则你会得到奇怪的结果。