IE7'deki scrollHeight, daha önce kullanılmadan önce başvurulmadıkça yanlış değer döndürür

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;
}

Bu öğeyi görüntülemem gerektiğinde, sınıfı kaldırırım ve scrollHeight değerini hesaplıyorum. Çoğu tarayıcıda, bu iyi çalışıyor. Ancak, IE7'de aşağıdaki kod, öğenin gerçek scrollHeight değerinden önemli ölçüde daha küçük bir yükseklik döndürür:

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

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

Ancak, önce elem.scrollHeight öğesine başvurursam, uyarı scrollHeight doğrudur:

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

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

IE7, öğenin scrollHeight değerini düzgün bir şekilde yeniden hesaplamak için birkaç milisaniyeye ihtiyaç duyuyor mu, yoksa başka bir şey var mı?

Yardımın için teşekkürler!

2

1 cevap

Bu tabloya bakın.

Öğenin kaydırma çubuğu olmadığında IE scrollHeight'ı yapar   içeriğin gerçek yüksekliğine eşittir; ve değil yüksekliği   öğesi. scroll4thth, 5 piksel olduğu IE8 dışında doğrudur   kapatır.

Ve scrollHeight, ie5-7 için 'yanlış' olarak işaretlendi. Belki ofsetHeight ile çalışacak? Ya da diğer özelliklerden bir şekilde hesaplamak?

Ayrıca buradan bahsetmiştim ...

Ne yaparsanız yapın, IE'de vücudun yükten önce değil öngereklere erişin.   kovuldu, aksi halde garip sonuçlar alacaksın.

0
katma