scrollHeight in IE7 retourneert een onjuiste waarde, tenzij specifiek wordt verwezen vóór gebruik

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

Wanneer ik dit element moet weergeven, verwijder ik de klasse en bereken ik de schuifhoogte ervan. In de meeste browsers werkt dit prima. In IE7 retourneert de volgende code echter een hoogte die aanzienlijk kleiner is dan de daadwerkelijke scrollHeight van het element:

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

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

Als ik echter eerst verwijs naar elem.scrollHeight, is de gewaarmerkte scrollHeight correct:

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

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

Heeft IE7 alleen de extra paar milliseconden nodig om de scrollHeight van het element opnieuw te berekenen, of is er iets anders aan de hand?

Dankjewel voor je hulp!

2

1 antwoord

Zie deze tabel.

Wanneer het element geen schuifbalken heeft, maakt IE de schuifhoogte   gelijk aan de werkelijke hoogte van de inhoud; en niet de hoogte van de   element. scrollWidth is correct, behalve in IE8, waar het 5 pixels is   off.

En scrollHeight gemarkeerd als 'incorrect' voor ie5-7. Misschien werkt het met offsetHeight? Of bereken het op de een of andere manier van andere eigenschappen?

Ook hier vermeldde dat ...

Wat u ook doet, in IE opent u de property's niet voordat de body onload is   heeft geschoten, anders krijg je rare resultaten.

0
toegevoegd