Я не трус, но чёрт возьми!

И вроде ничего страшного — ну вышел IE8 beta 2, ну добавили поддержку каких-то новых свойств из стандарта CSS 2.1. Сиди себе и жди финальную версию где-нибудь поздней осенью. А там что? Никакого тебе hasLayout'а, никаких expression'ов — словом, никаких привычных методов борьбы с багами…

И поэтому немного страшно.

Для тех, кто не хочет, чтобы было страшно, есть два решения. Первое — поверить лозунгам Microsoft, что, мол, мы делаем браузер ориентированный на полную поддержку веб-стандартов. Что ж — отлично, значит, во избежание каких-то проблем, нужно просто не отдавать IE8 файлы хаков:

<head> 
    <link rel="stylesheet" type="text/css" href="style.css"/>
    <!--[if lt IE 8]>
        <link rel="stylesheet" type="text/css" href="ie.css"/>
    <![endif]-->
</head>

«Если версия IE младше, чем восьмая, то подключаем файл с хаками», — говорит нам этот код. В результате, мы в полной мере доверяем той поддержке веб-стандатов, а также тем багам, которые безусловно всплывут после выхода IE8. Благородно до умиления, но, по мне, слишком рисково.

Второй вариант существует благодая паранойе Microsoft по поводу обратной совместимости. С другой стороны, их можно понять — у них на совести столько лет наплевательства на развитие собственного браузера. Называется этот переключатель X-UA-Compatible и включает в IE8 режим особый режим рендеринга не запутанными схемами DOCTYPE, а вполне ясным указанием:

<meta http-equiv="X-UA-Compatible" content="IE=7"/>

«Запустим-ка сайт в режиме совместимости с IE7», — говорит нам этот код. Что значит, что IE8 использует для рендеринга вашего кода один из трёх (sic!) движков, что спрятаны у него под капотом, а именно режим совместимости со стандартами (standard compliance mode), который включается в IE6–7 при наличии правильного DOCTYPE. Оставшиеся два — это хвалёный режим соответствия стандартам (super standard mode) и конечно же режим уловок (quirks mode).

Отдельного изучения заслуживает вопрос комбинации X-UA-Compatible с различными DOCTYPE. В рассматриваемых примерах, IE6–7 по умолчанию переключаются в режим совместимости со стандартами правильным DOCTYPE.

Итак, комбинируем:

<head> 
    <meta http-equiv="X-UA-Compatible" content="IE=7"/>
    <link rel="stylesheet" type="text/css" href="style.css"/>
    <!--[if IE]>
        <link rel="stylesheet" type="text/css" href="ie.css"/>
    <![endif]-->
</head>

…в этом случае IE8 работает в точности как IE7, бороться с котрым мы уже более-менее научились. Для полной уверенности включим X-UA-Compatible со значением IE7 и проверим:

<!--[if IE 8]>IE8<![endif]-->
<!--[if IE 7]>IE7<![endif]-->

В результате IE7, как и IE8 beta 2, выведут «IE7».

Таким образом, мы можем подстраховаться на случай, если финальная версия IE8 окажется такой же сырой бетой, как текущая бета кажется скорее сырой альфой — как метко выразился на Хабре Марат Таналин.

Комментарии

19

Меня, кстати, сейчас больше волнует Firefox 3.1, где после изменений в механизме рендеринга генерируемых элементов появилась одна весёлая проблема при сочетании такой генерации и display: table.

Придётся писать багрепорт, благо у Mozilla есть вменяемый способ это сделать. В отличие от. ;-)

Я немного запутался тут: «Если версия IE младше, чем восьмая, то притворяемся шлангом и не подключаем файл с хаками». Может, всё-таки, подключаем для всех, младше IE 8, кроме него самого? :-)

Я немного запутался тут

Какая неприятность… Уже правлю, спасибо. Нельзя всё-таки по ночам публиковать. Писать можно, а публиковать только с утра, на свежую голову )

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

Да уж... До чего довел ИЕ верстальщиков, если при выходе новой версии они стараются "вернуть" его к ИЕ7 со своими известными уже плюхами :)

И крики про Интранет это бред. Вы вообще видели, как сделаны интранет сайты и кто их обычно делает? Это же ужас-ужас в большинстве случаев. Если для интранет сайта надо действительно сделать редим суперсовместимости достаточно добавить мета. Но с полным осознанием того, что делается.

Впечатления от IE8b2 только самые положительные, конечно много что кривовато, но тот же Developer Tools сочитает в себе самые необходимые возможности FireBug и Web Developer Tollbar в FF, отлаживать скрипты теперь очень удобно. И еще хорошо поддерживает кирилические домены. Вообщем я ожидаю лучшего :-)

Да, Opera и впрямь поддерживает, а остальные отдают название в виде какого-то псевдонима в латинице.

Да, Opera и впрямь поддерживает, а остальные отдают название в виде какого-то псевдонима в латинице.

Это punicode.

Думаю, что они могут пойти на то, чтобы включить этого зверька в какой-нибудь очень обязательный апдейт. В любом случае, мне кажется, что нынешняя доля IE7 в большей степени состоит из «поди да скачай», чем из пользователей Vist'ы.

В любом случае, мне кажется, что нынешняя доля IE7 в большей степени состоит из «поди да скачай», чем из пользователей Vist'ы.

Да ладно. Какие могут быть причины у человека (не разработчика), чтобы отдельно скачать IE7? Есть IE6 работает - вот и хорошо, вот и ладно. А если он задумается о апдейте, то в думаю так или иначе до его слуха дойдет инфа и о других браузерах.

Максим Покровский, есть такая штука «Автоматическое обновление», которое само предложит установить новую версию Internet Explorer или очередную заплатку для него. Во многих локальных сетях сейчас есть серверы автоматического обновления Windows XP/Vista, где пользователи совершенно бесплатно с большой скоростью (у нас до 8Мбит/сек) могут обновить систему, и многие этим пользуются, покрайней мере в моем городе Волгограде.