Web-разработка: Анти-IE
Я думаю, эти строки ударят по сердцу каждого, кто пробовал когда-либо заниматься версткой, и знает, что такое «кроссбраузерность». Для тех, кто знаком с темой меньше, представлена следующая часть текста.
Доля Internet Explorer на рынке браузеров составляет порядка 80%, притом еще год назад она была на уровне 90%. Это — самый популярный браузер. Почему? Он самый удобный? Большинство тех, кто когда-либо использовал другие браузеры, так не считают. Он самый безопасный? Информационные IT-агентства просто кишат сообщениями об «очередной дыре в IE». Это факт, с которым согласится даже самый упорный. Он функциональный? По функциональности переплюнуть Opera сможет только Firefox с плагинами. Тогда почему? Да все потому же - он по умолчанию включен в ОС Windows и подогреваемый на остальных дровишках Microsoft занимает лидирующее положение на рынке. Большинство пользователей просто не представляют альтернативы, Internet Explorer — это и есть интернет, другого не надо. Ну ладно, лирику в сторону — статья не об этом.
Пользуются и пользуются, в чем тут проблема? Мешают кому-то? Не смейтесь пожалуйста: «Да! Мешаете!». А именно, сильно усложняете жизнь разработчикам сайтов, в том числе JavaScript/AJAX разработчикам и верстальщикам.
Дело в том, что IE не только ужасно неудобный, самый небезопасный, медленный, нефункциональный браузер, но он еще и не поддерживает стандарты. В интересной форме об этом можно прочитать тут. Для всех браузеров пишется один и тот же HTML/CSS код, и все, по логике, должны отображать и выполнять его одинаковым унифицированным образом, чтобы не было неразберихи. Для этого существует организация «Консорциум W3C», которая как раз тем и занимается — стандартизацией технологий, описанием того, где что и как должно себя вести. Но вот незадача, эти стандарты как минимум пытаются поддерживать все популярные браузеры: Firefox, Opera, Konqueror, Safari, но ни IE. Не IE, доля которого — 80%! Что получаем в итоге? На примере верстки. Нам надо добиться единообразного отображения xHTML/CSS кода в браузерах. Это не так сложно сделать, т.к. если верстка отображается правильно в Firefox, то с 95%-ой вероятностью, она будет так же отображаться и в Opera. В IE — все к чертям едет. Исправляем в IE — ломается в остальных браузерах. Так вот кроссбраузерностью фактически и называется умение делать верстку такой, чтобы она единообразно отображалась во всех адекватных браузерах и в IE одновременно.
Для того чтобы хоть чуть-чуть расслабить эту головную боль, собрано много способов, с помощью которых можно писать своего рода «два кода» для браузеров (это условные комментарии - узаконенная особенность самого IE, знаки подчеркивания и комментарии в стилях, «* html», и прочее). Что характерно, эти дыры меняются от версии к версии — одни закрываются, другие появляются, и таким образом можно написать код под разные версии IE. Но все это представляет большую головную боль для разработчиков. И бывают ситуации, когда до 1/2 времени затраченного на верстку, ушли на обеспечение «совместимости» верстки. Были и совсем шоковые ситуации, когда при сдачи сайта заказчику, у него не отображалась интересное JavaScript-меню. Как оказалось, у него был IE 5.0, убеждения не помогали и прежде чем добиться результатов, пришлось затратить уйму времени.
Чтобы не быть голословным, приведу несколько самых неприятных для меня фактов:
До 7-й версии не поддерживаются свойста min-height, min-width
Своё исключительное понимание параметров padding, margin (http://getbits.info/wp-go.php?url=http://htmlbook.ru/content/?id=92)
Неверный подсчет процентов при абсолютном позиционировании
Неверное понимание параметра «overflow»
Неверное понимание дочерне-родительской логики вложенности тегов при относительном позиционировании
Список можно продолжить - http://www.gtalbot.org/BrowserBugsSectio… (насчитано 88 в IE6 и 83 в IE7 несоответствий стандартам)
Этот список действительно очень большой, и написал здесь только то, что пришло на ум, если проследовать по ссылкам, то можно найти десятки и сотни других проблем: отличная объектная модель (это приводит к тому, что почти все AJAX-библиотеки имеют два кода: для IE и для браузеров, адекватно воспринимающих DOM), другой метод AJAX передачи данных («window.XMLHttpRequest» во всех браузерах и «window.ActiveXObject» в IE) и прочие проблемы с ним, незнание тега «embed» (и замена его своим «object»), и наконец отсутствие поддержки полупрозрачности в PNG графике. Фактически, материалы можно найти на любом форуме хоть как-либо связанным с Front-end разработкой.
Ссылки по теме:
http://www.gtalbot.org/BrowserBugsSectio…
http://cssing.org.ua/2005/11/11/ie-magic…
http://www.positioniseverything.net/ie-p…
http://htmlcoder.visions.ru/JavaScript/?…
Хоть большинству читателей, я думаю, все эти факты давно известны, и я совершенно не говорю ничего нового, но в качестве вводной части в проблему я решил дать этот ликбез. Все это сильно усложняет жизнь разработчикам, и порою заставляет делать ровно двойную работу, и потому, что браузер IE не поддерживает стандарты. О своём отношении к такой политике Microsoft в весьма патетичной форме я высказывался тут. И с этим надо что-то делать. Как минимум — очень хочется. Сейчас доля этого браузера начинает падать, но неизвестно как процесс будет развиваться дальше, и у меня искреннее желание форсировать его, направляя в то русло, куда он идет сейчас — сделать свой вклад в уменьшение доли IE на рынке браузеров.
Главная проблема заключается в том, что, простите за тавтологию, проблемы разработчиков не волнуют пользователей. А в большинстве случаев, они просто не в курсе этих проблем. Моя мысль стоит в том, чтобы в ясной и понятной форме донести эти проблемы: в форме манифеста, централизованной пропаганды, вирусной передачи, организации «поддержки» этому движению. Посвятить этому сайт, чтобы было куда сослаться для аргументации совета об использовании альтернативного браузера. Как показывает практика, люди относятся весьма сочувствующе, если доходчиво объяснить проблему. Даже, далекие от Web. В первую очередь, затронуть тех, кто в состоянии делать выбор сам, во-вторую — делать его за других (администраторы, extended-юзеры), в-третьих — основная масса пользователей. Привычка использовать хорошие браузеры и без того неплохо работает по сарафанному радио, и будет еще лучше, если диапазон вещания расширится. Фактов и материалов против IE очень много, но нет организованности, чтобы это имело результат: надо собрать все в кучу, и завернуть в подарочную обертку. По факту же, это получается партизанская война на стороне Google. Я обращаюсь с вопросом, может ли эта идея получить деятельную отдачу?
UPD: Желающим присоединиться, можно писать мне личку, чтобы совместо подумать над организацией и воплощением этой идеи.
habrahabr.ru
- Ajax: AJAX для новичков Сейчас в сети Интернет наблюдается очень активное развитие (и даже использование) новых технологий. Одна из таких технологий - AJAX.Что такое AJAX? AJAX - это аббревиатура, которая означает Asynchronous Javascript and XML. На самом деле, AJAX не является новой технологией, так как и Javascript, и XML существуют уже довольно продолжительное время, а AJAX - это синтез обозначенных технологий. AJAX чаще всего ассоцириуется с термином Web 2.0 и преподносится как новейшее Web-приложение. При исполь
- Web-разработка: Оптимизируем загрузку веб-страницы Примечание: ниже перевод статьи "Presentation Layer Performance Tuning", в которой затрагиваются основные аспекты оптимизации загрузки веб-приложений и предлагаются некоторые практические советы.Обычный разговор про увеличение скорости работы веб-приложений сводится к обсуждению задержек при передачи информации между сервером и клиентом, оптимизации базы данных и времени, потраченного сервером для обработки и отправки HTML клиенту.Эти процессы, однако, только частично затрагивают то время, кото
- Web-разработка: Разберемся раз и навсегда: AJAX, «кириллические символы», кодировки, prototype.js, jQuery, JsHttpRequest AJAX, — это технология. Одной из часто используемых техник этой технологии является посылка запросов при помощи объекта класса XMLHttpRequest. Как же посылать и принимать AJAX запросы в нужной нам кодировке, нужно ли использовать однобайтовые кодировки или не обойтись без UTF-8. На все эти вопросы раз и навсегда ответит эта статья. Кстати, перепечатка с моего. И ещё, классов-то, конечно, в JavaScript нет, но для удобства будем пользоваться такой терминологией. В документации на XMLHttpRequest с
- Каскадные Таблицы Стилей: IE7 { css2: auto; } IE7 - библиотека JavaScript, заставляющая эксплорер работать по стандартам. Устраняет множество проблем с css, делает правильной обработку полупрозрачных PNG под IE5 и IE6.IE7 загружает и парсит таблицы стилей в формат, понятный эксплореру. После этого появляется возможность использовать функции CSS2/CSS3 без css-хаков. Облегченная версия скрипта включается в ваш HTML/XML документ. Никакого изменения разметки или css стилей не нужно. IE7 предоставляет Microsoft Internet Explorer поддержку W3C
- Web-разработка: Как JavaScript тормозит Веб (и что с этим делать)? Примечание: ниже перевод статьи "How JavaScript is Slowing Down the Web (And What To Do About It)", посвященной, в основном, работе с виджетами: характерные проблемы и методы их решения.Одна строка JavаScript является основой большинства текущих технологий, которые используют авторы блогов. Виджеты, средства (фото-/видео-)обмена, отслеживание посетителей, рекламные объявления. Во многих случаях единственная строка JavaScript — это все, что нужно автору, чтобы добавить в своей блог что-то