2013-05-01 4 views
5

Я использую IE9, помещенный в режим стандартов IE8 с помощью инструментов F12, чтобы проверить мою страницу. Сценарий страницы использует getBoundingClientRect для определения того, что видно в окне просмотра.Почему getBoundingClientRect медленнее в IE8?

Используя инструмент профилирования, я вижу звонки на getBoundingClientRect, занимая много времени. Например, 244 вызовам функции заняли исключительное время в 4,361 мс!

Есть ли причина, по которой эта функция работает медленно в IE8? При работе в режиме IE9, Chrome, FireFox и т. Д. Функция кажется быстрой.

+0

Каждый вызов может вызвать перезапуск DOM, в зависимости от того, как и где вы его используете? – Bergi

ответ

0

getBoundingClientRect был впервые представлен Microsoft в IE5, и нет известных проблем с производительностью.

JQuery UI и другие, использовать его, и когда в прошлом они движутся к нему, было удивительным: http://ejohn.org/blog/getboundingclientrect-is-awesome/

Я нашел сравнение между jQuery similar calculation и getBoundingClientRect: http://jsperf.com/getboundingclientrect-vs-jquery обычно выигрывают getBoundingClientRect

Вы запускают ваш сайт в режиме совместимости IE8, который иногда может угадать производительность, можете ли вы протестировать его в реальном браузере IE8? Здесь производительность должна быть одинаковой.

+0

Я собираюсь получить IE8 VM, настроенный позже на этой неделе, и тест. Я надеюсь, что режим совместимости медленный. –

+4

@AndrewDavey Я столкнулся с той же проблемой - выяснили, являются ли проблемы производительности только побочным эффектом режима совместимости? –

+3

@LarsGrammel - Кажется уместным: http://xkcd.com/979/ – Bobson

Смежные вопросы