Ресурс для веб-разработчиков и CSS-галерея

CSS, веб-стандарты, javascript

CSS, веб-стандарты, javascript

Указание версий: опасность или угроза? Автор: Джеффри Зельдман

тэги Браузеры Microsoft
Статья евангелиста веб-стандартов Джеффри Зельдмана, посвященная обратной совместимости браузерных версий, философские размышления на тему доктайпа и многое, многое другое..

Мне бы хотелось жить в мире, где люди не убивают друг друга по религиозным или этническим причинам, и где не требуется указание (таргетинг) версий. Разработка по веб-стандартам должны стать по возможности распространенной, и каждый, кто работает над сайтом, должен знать, как это делается. Браузеры должны иметь близкую к совершенству совместимость с веб-стандартами, и, если это не так, их производителям следует заняться народной музыкой.

Но производители, включая Microsoft, выбирают причудливый путь для развития бизнеса, когда их продукты занимают здоровую долю рынка (здоровую для них, не обязательно для рынка). И даже огромные компании — такие как Microsoft — иногда прислушиваются к мнению своих покупателей и пытаются решить связанные с их продуктами проблемы.

Чтобы понять таргетинг версий, — который мы вынуждены опробовать, раз уж Microsoft намеревается его реализовать и надеется, что, по крайней мере, некоторые из нас будут применять его на практике, — нам нужно рассмотреть две различные группы покупателей, удовлетворить которые попытается новый браузер от Microsoft.

Быстрый и мертвый

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

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

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

Но у Microsoft есть другая, ни в коем случае не меньшая, группа клиентов. Мы можем назвать их непросвещенными. Кто-то из них является профессиональными разработчиками, которые уже должны были знать о веб-стандартах и доступности информации, но либо они об этом не слышали, либо они не соблюдают принятые нормы. Такая ситуация может объясняться тем, что эти люди работают в компаниях, которые ограничивают их доступ к книгам, конференциям и даже к сайтам, не имеющим отношение к работе, — тусклые компании с устаревшими и недальновидными принципами о том, какие браузеры и платформы будут или не будут поддерживаться. Давайте будем снисходительны: некоторые из этих разработчиков работают исключительно с интрасетью, зависимой от платформы. Другие знают о веб-стандартах, но работают в компаниях, которые заставляют использовать табличную верстку, поскольку IE5 имеет некорректную поддержку CSS, и т.д. и т.п.

Microsoft не может отказаться от этих веб-разработчиков, также как и не может не признать ошибочность своей ориентации на платформы, а не на стандарты. В конце концов, в старые смутные времена такие компании, как Microsoft и Netscape, помогли создать касту неверно информированных разработчиков, вдохновляя IT сообщество разрабатывать сайты под их собственную «платформу». Вполне возможно, что отдельные подразделения Microsoft до сих пор продают это змеиное масло, несмотря на общую ориентацию компании на веб-стандарты.

Профессиональные веб-разработчики — это капля в море непросвещенных создателей сайтов. Существуют миллионы владельцев мелкого бизнеса, школьных учителей, проповедников, тренеров и т.д., которые создают сайты каждый день, вооружившись паршивым программным обеспечением и немногим другим. Такие сайты редко имеют великий дизайн, хороший контент и сносное юзабилити, они почти никогда не проходят тест на соответствие XHTML или тому, что относится спецификациям CSS по Хакону Ли (Håkon Wium Lie) и Берту Босу (Bert Bos).

Эта непросвещенная группа клиентов либо не тестирует сайты вообще, либо «тестирует» только в той версии IE, которая установлена на их компьютере. Вы и я, возможно, не волнуетесь за миллионы люмпен-«авторов» (хотя мы с удовольствием превратили бы их в приверженцев веб-стандартов), но Microsoft не может отвергнуть их.

Чтобы удовлетворить непросвещенных, Microsoft должна убедиться в том, что, если IE станет более совместимым, плохо сделанные сайты не «сломаются» («сломаются» взято в кавычки, поскольку некоторые могут подумать, что некорректно отображающийся, но функционирующий сайт не является сломанным).

Стремление отвечать интересам обоих групп не является чем-то новым. Бразуеры понимали, как это делать еще в 2000 — в основном, благодаря реализации указателя DOCTYPE, изобретенного участником The Web Standart Project Тоддом Фарнером (Todd Fahrner). Но старый трюк больше не работает — по крайней мере, в IE.

Езда на двух лошадях с одной позади

Когда совместимость стандартам IE резко продвинулась вперед вместе с IE7, тем самым временно удовлетворив первую группу клиентов Microsoft, плохо сделанные сайты второй группы перестали корректно работать, погрузив непросвещенных разработчиков в сильное раздражение.

Снаружи, для читателей ALA и других стандартистов, обновление IE7 казалось победой. Но внутри компании Microsoft очевидно, что ущерб от квинтильона плохо сделанных сайтов не показался допустимой неудачей прогресса. Если команда IE хочет остаться у руля и продолжать улучшать поддержку веб-стандартов, она должна найти новый способ защитить работу непросвещенных разработчиков.

Фраза «мы не можем испортить Web» стала мантрой (я знаю это потому, что на прошлой конференции я сидел рядом с некоторыми людьми из Microsoft, и они постоянно это говорили).

Абсурдно, но корректно: opt-in по умолчанию

С некоторых пор DOCTYPE позволял браузерам правильно поддерживать дизайн по стандартам, не «ломая» в то же время неумело созданный сайты. Но, как объяснил участник The Web Standart Project Аарон Густавсон (Aaron Gustafson) в выпуске номер 251, присутствие DOCTYPE в заголовке (X)HTML документа больше не служит надежным показателем того, что разработчик знал, что делает, и что страница должна быть отображена в режиме соответствия веб-стандартам.

Firefox, Opera, и Safari не имеют проблем с этим — не потому, что они морально лучше по сравнению с их редмондским соперником, а потому, что почти что ни один непросвещенный разработчик не знает причуд Firefox, Opera и Safari. Подобно этому никто не кодирует на нестандартном скриптовом языке Firefox, Safari и Opera — потому, что они поддерживают стандарт JavaScript/ECMAScript. Точка.

Напротив, несметное число людей, которые не знают ничего лучше IE, проектируют сайты с учетом странностей IE6. Вот почему улучшенный IE7 «сломал» старые сайты. И именно поэтому, проектируя новый триггер, Microsoft теперь по умолчанию будет защищать непросвещенных разработчиков. Таки образом они пришли к абсурдной мысли о том, что IE42 будет работать точно так же как IE7 до тех пор, пока знающие разработчики осознанно не отменят стандартный режим работы путем включения опционального мета-тэга в заголовке документа (или используя заголовок HTTP и оставляя свою разметку чистой).

Либо IE будет работать так, либо не будет работать вообще — это совершенно абсурдная мысль, настолько безумная, насколько был без ума от ярости Джереми Кит (Jeremy Keith) и другие здравомыслящие разработчики, когда они это услышали.

Если IE8 по умолчанию будет работать как IE8, то он может сломать сайты второй группы (и не просто сломать в кавычках: здесь мы говорим о скриптах). Нарушение корректной работы миллионов сайтов недопустимо для руководства Microsoft и для создателей этих сайтов. Чтобы не допустить такой поломки, разработчикам Microsoft нужен новый маркер. Его работа должна быть аналогичной работе оригинального DOCTYPE, а именно: он активируется опытными разработчиками, в противном случае по умолчанию он выключен.

В указателе DOCTYPE состояние «выключен по умолчанию» означает «работает в режиме не по стандартам, с глюками». В указателе версии это означает «контент отображается так же, как в IE7». В обоих случаях поведение будет одинаковым: если вы хотите улучшить отображение, вы должны включить опцию.

Действительно ли нужен новый указатель?

Вы можете спросить, а будет ли нужен новый маркер, упростивший переход на IE7, в будущем, раз уж значительная часть пути к поддержке стандартов уже преодолена? И это справедливо в тех случаях, когда используется CSS. По большому счету, любой сайт, который корректно отображался в IE7, не должен «сломаться» в IE8.

Конечно, мы не можем это утверждать с вероятностью в сто процентов; даже, если скрипты не будут проблемой, есть вероятность, что любая новая версия IE нарушит что-либо, и в подобном случае указание (таргетинг) версии является отличным механизмом предотвращения любых неполадок. Тем не менее, для многих веб-дизайнеров, ориентированных на CSS, создание нового указатель теперь не кажется таким необходимым, как было до появления IE7.

Однако даже если указание версий было единственной данью, которую инженеры Microsoft должны были заплатить своим начальникам для сохранения возможности улучшения поддержки веб-стандартов в IE и дальше, в чем тогда вред? Тэг meta валиден, его использование опционально. Заголовок HTTP прост в использовании и позволяет оставлять чистую разметку.

Улучшенный JavaScript требует opt-in

Таргетинг версии вводится не только для того, чтобы защитить разработчиков средней и низкой квалификации от возрастающих возможностей CSS, которые будут представлены в IE8. IE8 обещает тщательно пересмотреть свою поддержку DOM и отбросить конфликтующий JScript. Для стандарто-ориентированных кодеров JavaScript это большая радость. Но многие другие кодеры и миллионы IE-only сайтов не готовы к этому. Им нужна защита в виде указателя версий.

Вопросы? Вы, в первом ряду:

«Еще раз, нас просят достигнуть специальной договоренности с Microsoft. Почему эта надоедливая компания не может сделать поддержку стандартов в своем браузере столь же точной, как Firefox? Почему они перекладывают это обязанность на разработчиков?»

Мы уговариваем Microsoft, как наши предки уговаривали Императорский Рим. Как сказал один мудрый человек, «кесарю — кесарево».

На самом деле, Mozilla тоже предлагала указание версий по принципу opt-in, сначала когда Firefox 1.5 представил поддержку JavaScript 1.6, а затем когда Firefox 2.0 представил поддержку JavaScript 1.7. В обоих случаях имел место недвусмысленный opt-in. В целом сравнение идет в пользу Мозиллы, поскольку они таргетировали версии скриптового языка, а не версии браузера. Но хотя Мозилла сделала это более аккуратно, создатели обоих браузеров предложили указание версий по одной и той же причине: защитить разработчиков от незапланированного поведения в ситуации появления улучшенной поддержки скриптов.

В течение долгих лет нестандартисты писали на JScript. В то время как изменившаяся поддержка CSS в IE7 может «сломать» сетку сайта, улучшение поддержки JavaScript в IE8 с легкостью может нарушить функционал сайтов. Появление серьезной поддержки DOM полностью изменит правила игры. Включенная по умолчанию, она поставит на колени множество сайтов. Это действительно может сломать сеть, без кавычек. Обеспечить IE8 большую совместимость с веб-стандартами в качестве опции — это единственный способ помочь всем преодолеть тяжелую скриптовую гору.

В то время как принцип opt-in защитит старомодных кодеров от больших изменений в скриптовой среде, он также предоставляет уникальные выгоды и для последовательных стандартистов.

Бремя больше не лежит на разработчике

Действительно новым является то, что, отказываясь от майкрософтского таргетирования версий (не включив соответствующий заголовок HTTP или мета-тэг), вы пропускаете тестирование и в будущих версиях IE. Если ваш сайт сегодня работает в IE7, он будет работать и в IE47, обещает Microsoft. Он будет работать в IE47, даже если IE47 с точки зрения стандартиста будет считаться кровавой катастрофой. До тех пор, пока IE47 корректно поддерживает указание версий, ваш сайт будет работать в IE47 так же хорошо, как и в IE7.

Это и является наиболее точным определением термина «forward compatibility» (совместимость с будущими версиями), хотя это не тот путь развития совместимости, о котором я думал, формулируя преимущества разработки, основанной на стандартах.

Посмотрим на обратную сторону медали.

Система работает по принципу opt-in. Это наш выбор — включать или нет необязательный мета-тэг (или HTTP заголовок), который включит таргетирование версий. Следовательно, разработчиков больше не просят идти на уступки Microsoft?у — по крайней мере, не дальше известных ошибок IE7. Напротив, теперь Microsoft приспосабливается под нас.

Это очень большое и полезное изменение для всех, кто пытался заставить свой сайт, основанный на веб-стандартах, корректно работать под IE. Сейчас IE приблизился к веб-стандартам на несколько световых лет по сравнению со старыми версиями. И Microsoft пообещал постоянно улучшать совместимость со стандартами. Если мы включаем поддержку стандартов, то можем ожидать тот же уровень работы со скриптами, что и в любимых нами браузерах. Улучшенная, предсказуемая поддержка стандартов во всех браузерах. Разве это не то, что мы все хотим?

В то же время, Microsoft обеспечивает механизм посредством которого ни один дизайнер или кодер больше не будет удивлен неожиданным поведением новой версии IE. Если я навсегда откажусь от указания версий, я больше никогда не узнаю очередные IE-причуды. Скорее всего, я и мое агентство не будем так делать, но это жизнеспособная функция (а если достаточное число нас все же будет поступать подобным образом, Internet Explorer будет понемногу терять свою рыночную долю, что сделает некоторых людей счастливыми).

Я могу протестировать старые сайты в новых версиях IE добавив мета-тэг. Если старые сайты не заработают, я удалю элемент, и старый сайт будет отлично выглядеть в новом браузере.

Разработчики и дизайнеры должны обнимать друг друга и рыдать от счастья. IE больше не отстой. Кросс-браузерный кодинг без необходимости лишней работы с IE (ну, кроме «работы» включить мета-тэг или HTML заголовок) скоро станет реальностью. Больше ни одна версия IE не удивит нас непредсказуемым поведением.

Голубая пилюля

Таргетинг версий — потрясающая вещь. Он потрясает нашу браузеро-отрицающую веру. Его поведение по умолчанию, пусть выгодное как опытным, так и непросвещенным разработчикам, происходит в противоречии с нашими ожиданиями и кажется неправильным. И это представляет как минимум одну загадку Сфинкса: как может IE8 соответствовать требованиям сборника тестов Acid2, если по умолчанию будет вести себя как IE7? Вы можете потратить недели на поиск ответа, но так и не найти логического объяснения. Позвони мне, Льюис Кэрролл (Lewis Carroll), но меня и так все утраивает.

Оригинал статьи → http://alistapart.com/articles/minorthreat

Написать комментарий




Ввод HTML запрещен!!Введите текст с изображения:* проверка на работа
* — поля обязательные к заполнению!

Комментарии (0)



Сделано в 127.ru