IE9 Javascript медленнее, чем IE8 - это странно!

Мне трудно объяснить, почему следующий код работает медленнее в IE9, чем в IE8!

Вот тестовый код, который плавно работает примерно за полсекунды в (последних) FF / Chrome / Safari на OS X, WinXP и Win7 плюс IE7 & 8 на WinXP (для простоты я удалил твик, который заставляет его работать в IE6).

Почему-то я не могу объяснить, в IE9 он ужасен, медленный и неуклюжий. Уменьшение времени для setTimeout делает его немного быстрее, но не менее резким.

Я попытался удалить и протестировать некоторые из возможных узких мест (например, Math.min ... все без изменений.

Я в тупике ... может ли кто-нибудь указать мне в в правильном направлении? ... желательно такое, которое не требует анализа браузера?

Вот тестовый код ...

<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>
5
задан GeeBee 8 April 2011 в 00:25
поделиться