scrollHeight ў IE7 вяртае няправільнае значэнне, калі спецыяльна не рэферыраваць перад выкарыстаннем

I have been working on an Accordion class for MooTools that is more catered to what I need, but have noticed that in IE7 (which I still need to support), element.scrollHeight returns an incorrect value unless I specifically reference it before using it. For example, I have an element with the classes "container" and "collapsed" & following styles that is hidden from the page:

.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 элемента, або ёсць нешта яшчэ ў гульні?

Дзякуй за дапамогу!

2

1 адказы

Глядзіце гэтую табліцу.

<�Р> Калі элемент не мае палос пракруткі IE робіць scrollHeight   роўнай фактычнай вышыні зместу; а не вышыня з   элемент. scrollWidth правільна, за выключэннем у IE8, дзе гэта 5 пікселяў   выкл.

І scrollHeight пазначана як «няправільны» для ie5-7. Можа быць, ён будзе працаваць з offsetHeight? Або разлічыць яго як-небудзь з іншых уласцівасцяў?

Таксама тут адзначыў, што ...

<�Р> Усё, што вы робіце, у IE доступ да propertys не раней OnLoad цела   абстраляў, у адваротным выпадку вы можаце атрымаць непрадказальны вынік.
0
дададзена