Hi all
I’m having difficulty in explaining why the following code runs slower in IE9 than IE8! (Testing in Win 7 IE9 both 32 bit and 64 bit running in VMWare 3 virtual machine on OS X 10.6.7)
Here’s some test code that runs smoothly in about half a second in (latest) FF/Chrome/Safari on OS X, WinXP, and Win7 plus IE7 & 8 on WinXP (for simplicity I removed the tweak that makes it work in IE6).
For some reason I can’t explain, it’s awful in IE9, slow and clunky. Reducing the time for the setTimeout makes it a bit quicker but no less jerky.
I’ve tried removing and benchmarking a number of what might be the choke points (Math.min for example … all with no change.
I’m stumped … can anyone please point me in the right direction?.. preferably one that does not require browser-sniffing?
Here’s the test code …
<div id = ‘panel’ class=‘noShow’ style=‘background-color: #aaa;’>
<div id = ‘wrapper’ class=‘slideWrapper’>
<p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p>
</div>
</div>
<script type = ‘text/javaScript’>
var e = document.getElementById('panel');
var w = document.getElementById('wrapper');
w.style.overflow = 'hidden';
w.style.height = '1px';
var sh = w.scrollHeight;
show();
function show()
{
setTimeout(function()
{
w.style.height = Math.min(sh, (w.offsetHeight + Math.ceil(sh/15))) + 'px';
if(
(w.offsetHeight < sh)
)
{
show(e);
}
else
{
w.style.height = 'auto';
}
}, 20);
}
</script>
All ideas gratefully received… thanks in advance.
GeeBee
PS Posted this on stackoverflow.com without success - hopefully sitepoint.com readers can help?
PPS Sorry if this is a double-post … I thought I posted this some hour or so ago but I can’t see it on the forum at all. Maybe I goofed?
PPPS Hmmm… the editor removed the tabs in the .js, sorry.