我一直在研究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,或者还有其他什么东西可以使用?
感谢您的帮助!
答案 0 :(得分:0)
当元素没有滚动条时,IE会生成scrollHeight 等于内容的实际高度;而不是高度 元件。 scrollWidth是正确的,除了在IE8中,它是5像素 关闭。
并且对于ie5-7,scrollHeight标记为“不正确”。 也许它适用于offsetHeight?或者从其他属性以某种方式计算它?
here也提到......
无论你做什么,在IE中访问属性不是在身体的负载之前 已经解雇了,否则你会得到奇怪的结果。