#javascript #internet-explorer-9
#javascript #internet-explorer-9
Вопрос:
Мне трудно объяснить, почему следующий код работает медленнее в 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>
Ответ №1:
В IE9 по умолчанию используется программный рендеринг на виртуальных машинах VMware (по состоянию на 8.07.2011) в ближайшем будущем должно быть выпущено исправление, но в этом сообщении в блоге не указаны временные рамки.
Комментарии:
1. Спасибо за это @TodK … очень полезно… Я думаю, это объясняет это
Ответ №2:
Вы используете 64-разрядную версию IE 9 или 32-разрядную версию? 64-разрядная версия не запускает Chakra, который является оптимизированным движком JavaScript из 32-разрядной версии
Комментарии:
1. Хороший вопрос … спасибо за напоминание. 64-разрядная версия Win7 в VMware Fusion 3… приносим извинения за упущение.
2. Ах!… хороший вопрос… 64-разрядная версия Win7 в VMware Fusion 3… приношу извинения за то, что опустил эти данные.
3. Упс! Извините за двойной пост … Я нажимаю <enter>! Я думаю, это может быть моим объяснением. Я скачаю 32-разрядную версию, попробую это и сообщу … хотя, возможно, потребуется несколько дней.
4. Я имею в виду 32-разрядную версию IE 9, вы можете запустить ее без проблем на 64-разрядной версии win 7
5. Ах… это ново для меня… Я проверю и сообщу
Ответ №3:
При запуске в виртуализированной среде всегда наблюдаются странные колебания производительности. Выбор драйверов и то, как программное обеспечение разгружает обработку, окажут влияние. Вы пробовали обновлять драйверы в своей системе?