Как стать автором
Обновить

Selectivizr, IE8 и White Screen of Death

Время на прочтение2 мин
Количество просмотров5.1K
Internet Explorer 8, как много в этом имени для рядового веб-разработчика :-) Браузер, который с одной стороны до сих пор удерживает значительную часть рынка (а значит не может быть просто так проигнорирован), а с другой — обладает тяжелым наследием IE6 в виде массы «особенностей» поведения и отсутствием поддержки целого ряда новых и вкусных технологий которые так хочется использовать. Эта двойственность породила целый ряд т.н. polyfills — JS скриптов которые призваны хоть немного подтянуть IE6-8 до уровня современных браузеров. Об одном из них и пойдет речь в данной статье.

Selectivizr — прекрасный скрипт который магически (путем простого подключения к странице) добавляет поддержку целого ряда CSS3 селекторов в IE6-8 что избавляет разработчика от необходимости добавлять в код и стили сайта кучу «костылей» для исключения использования CSS3 селекторов. Для своей работы требует наличие подключенного JS фреймворка (поддерживаются jQuery, Mootools, Prototype, Dojo и ряд других), но один из этих фреймворков и так обычно присутствует почти в любом современном сайте.

Конечно selectivizr не всемогущ и на данный момент есть ограничения в его использовании, например, c динамическим контентом, но в любом случае это очень полезный скрипт и я использую его при разработке всех своих последних проектов. Как раз проблема в одном из них и побудила меня написать эту небольшую статью чтобы поделиться информацией с сообществом.

Перед запуском одного из проектов я получил bugreport от тестировщика о странном поведении сайта в IE8: при вводе URL и попытке загрузить сайт браузер отображал пустую страницу, но после повторного нажатия Enter в строке адреса сайт нормально загружался, отображался и работал. При этом проблема касалась только IE8 (на самом деле IE7 тоже, но он в том проекте не поддерживался), а IE9 в режиме работы IE8 вел себя как надо. Более того — дальнейшее изучение проблемы показало что:
  • Браузер нормально загружал саму страницу и все связанные с ней файлы
  • DOM нормально строился и запускался
  • Элементы страницы были на своих местах, можно было найти и кликнуть ссылку, найти и ввести данные в поля ввода

… но сама страница выглядела совершенно пустой. В developer tools было видно что <BODY> имеет нулевую высоту, но попытки задать и/или изменить высоту ни к чему не приводили.

Поиск ответа в интернете показал что проблема известна (1, 2, 3), но предлагаемые решения не работают.

Дополнительные эксперименты показали что проблема — в конфликте selectivizr и деклараций custom шрифтов @font-face в CSS. При этом обнаружился один нюанс который в итоге позволяет на данный момент обойти проблему: конфликт возникает только в в случае если декларация @font-face расположена во внешнем .css файле. При размещении декларации @font-face в теге <style> конфликта не происходит, custom шрифты работают нормально и WSOD исчезает.

Надеюсь данная информация будет полезной и сэкономит кому-то время на поиски причины WSOD и способа ее устранения.
Теги:
Хабы:
Всего голосов 19: ↑16 и ↓3+13
Комментарии2

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
24 сентября
Astra DevConf 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн