IE 8 Quirks против стандартов, получающих offsetHeight / offsetWidth - PullRequest
5 голосов
/ 21 августа 2010

Я нахожусь в процессе преобразования моего приложения для использования строгого режима XHTML (раньше у него не было DOCTYPE).Тем не менее, я заметил значительное ухудшение при получении offsetHeight / offsetWidth.Это очень заметно на страницах с большим количеством элементов DOM, скажем, в таблице с 1 столбцом на 800 строк, в ячейках есть только фрагмент текста.Посещение каждого элемента-потомка в этой таблице для получения их измерения смещения происходит намного медленнее, чем когда IE отображает страницу в режиме Quirks.Почему это так?и кто-нибудь знает советы, которые помогут IE рассчитать эти offsetValues?

Ответы [ 2 ]

2 голосов
/ 23 августа 2010

Я бы предложил заставить IE отображать вашу страницу в стандартном режиме, а не в причудах.Это можно сделать, добавив метатеги в заголовок вашего HTML-документа или настроив веб-сервер для добавления заголовков, совместимых с X-UA.

<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />

Кроме того, используйте встроенные фреймворки JavaScript, такие какjquery, prototype, yui и т. д., большинство из них уже решали проблемы с различными механизмами рендеринга.

1 голос
/ 28 августа 2010

@ bobince: Я считаю, что проблема связана с оплавлением.Логика в моем JavaScript пытается выяснить, перекрываются ли дочерние элементы друг с другом (поскольку они получают динамическое содержимое, которое я не могу предсказать) в контейнере абсолютного макета, а затем корректирует размеры css родителя и css братьев и сестер, которые необходимо сместить вниз.Изменение измерений css вызывает перекомпоновку, и это происходит в середине моей итерации, этот сценарий кажется намного медленнее в стандартах IE8, чем в IE8 Quirks для очень больших таблиц.Я знаю, что я должен скрывать или использовать documentFragment при выполнении операций такого типа, однако, поскольку мне нужно что-то переместить, а затем посмотреть на новые измерения смещения, я получаю неточные значения.

...