(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Почему Microsoft Internet Explorer 11 - худшее, что могло случиться с нами

Источник: habrahabr
forgotten

Я давеча написал комментарий о том, что компании Майкрософт давно пора перестать издеваться над веб-разработчиками и перейти на движок Gecko. Многие, видимо, посчитали это неуместной шуткой; тем не менее, это таки вовсе не шутка, а констатация факта. Те, кто с этим не согласен, видимо не пытались ещё разрабатывать под этот замечательный браузер.

Давайте я расскажу вам, какой это замечательный процесс.

Сколько браузеров вы поддерживаете, дорогие разработчики? Не так давно, пять лет назад, этот список был довольно прост: IE6, IE7, Opera, Firefox, Chrome. Пять браузеров, плюс кое-какие минорные вариации между 2 и 3 Firefox и 9 и 10 Оперой.

Сколько браузеров мы поддерживаем теперь?

Firefox, Chrome и Opera никуда не делись. Файрфокс и Хром давно перешли на короткий релизный цикл, последний артефакт неавтоматического обновления (Firefox 3.6) не так давно наконец-то потерялся с приборов. Опера должна перейти на тот же цикл в ближайшее время - да и последние версии Оперы/Престо особой головной боли не добавляли. Добавился Яндекс.Браузер, который внутре тот же Хромиум, хоть и обновляется реже.

Ну и, наконец, к вопросу про IE: сколько версий IE мы вынуждены поддерживать? В октябре по li.ru доли разных версий Internet Explorer в рунете были такими: IE10 - 4%, IE8 - 2.3%, IE9 - 1.7%, IE7 - 0.7% плюс невидимый на приборах IE11, который с выходом Windows 8.1 должен отбить у IE10 какую-то долю. Т.е. нам кажется, что это одна-две версии браузера, если вы готовы пожертвовать 4.7% аудитории, или три-пять - если не готовы или вдруг вы пишете продукт для страны с более высокой долей IE.

Как бы не так! Слушайте внимательно.

Internet Explorer, начиная с, прости господи, восьмой версии поставляется с набором движков от предыдущих версий. IE8 умеет работать в режиме IE7 и в режиме Quirks Mode (фактически, IE5.5!). IE9 умеет работать в режимах 9, 8, 7 и Quirks. IE10 умеет работать в режимах 10, 9, 8, 7 и Quirks. IE11 умеет работать в режимах 11, 10, 9, 8, 7 и Quirks. И это, внимание, РАЗНЫЕ движки! Не знаю, чем они там упарывались, когда принимали это решение, но режим IE10 в IE11 - вовсе не IE10! Вот, например, в IE9-10 есть баг с неправильный позиционированием канваса по z-index, который решался выставлением ему background-color: rgba(255, 255, 255, 0). В IE11 в режиме IE10 этот баг был тщательно портирован прекрасными разработчиками из Редмонда, а вот workaround портировать позабыли, и теперь канвас с абсолютным позиционированием там как бэ использовать нельзя. Совсем.

Итого, если вы, совершенно случайно, пишете какую-нибудь библиотеку или просто хотите реюзать код на разных доменах - то вам вот прям сейчас нужно поддерживать (сколько-сколько?) ДВАДЦАТЬ разных версий Internet Explorer! Двадцать версий браузера, который использует менее 10% аудитории! На секундочку, у файрфокса за всё время его существования было 28 мажорных релизов, у Хрома - 32.

И это только начало, ребята. Дух старой школы невероятно силён в Редмонде: все эти версии Internet Explorer будут поддерживаться Майкрософтом (сколько-сколько?) 10 лет! Занимательная задачка на устный счет: посчитать, сколько версий IE нам придётся поддерживать через 5 лет.

Пол Айриш написал про это прекрасную статью ещё в 2011: www.paulirish.com/2011/browser-market-pollution-iex-is-the-new-ie6/. Но даже он не смог предсказать всю упоротость разработчиков Майкрософта.

Шо?! Это ещё не всё?!

Это ещё далеко не всё, мои маленькие красноглазики. В IE10-11 Майкрософт презентовал ещё маленькую тележку свежих и революционных идей.

Начнём с того, что IE11 поставляется вот с таким юзер-агентом:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

Что в нём прекрасно? В нём НЕТ ВЕРСИИ самого Internet Explorer-а! Вообще слов "MSIE" больше нет. Знаете, почему? Потому что Майкрософт считает, что их браузер, внимание, не нужно детектить по юзер-агенту, поскольку он поддерживает все новейшие стандарты и его не надо отличать от других новых браузеров.

Давайте я повторю ещё раз: разработчики браузера, который поставляется с 6 разными движками, эмулирующими баги предыдущих версий этого браузера, начиная с 1999 года, заявляют, что его не нужно определять по юзер-агенту.

При этом абсолютно те же люди между последним Developer Preview IE11 и финальным RTM релизом берут и отрывают вендорские префиксы и ломают ещё пару десятков обратных совместимостей, о чём любезно сообщают в своём msdn-е: msdn.microsoft.com/en-us/library/ie/dn304886%28v=vs.85%29.aspx

Да-да. Если ваш код отлично работает в Developer Preview, это совершенно не значит, что он заработает в релизной версии, которая внезапно одномоментно раскатится паре десятков миллионов человек по всему миру. Но вы ни в коем случае не занимайтесь детектом версии по юзер-агенту!

Фиг с ним, с Developer Preview. В их прекрасной поделке нужно отличать версию оси, под которой она работает! Я серьёзно.
Вот сидят люди. В трудовой у них, наверняка, написано что-то типа Senior Software Architect. Придумывают стандарт PointerEvents, в котором, чин чинарём, всё по-взрослому - специальный флаг navigator.pointerEventsEnabled показывает, поддерживает ли браузер пойнтер-события или нет. Чтобы, понимаешь, никто ничего по юзер-агенту не детектил, а всё как в нормальных браузерах.

А потом внезапно выясняется, что у тех же людей обработка жестов падает в IE10/Win7. Вот прям в msdn-е так и написано:

Note The APIs we discuss in this section aren't supported in Windows 7 or earlier.

msdn.microsoft.com/en-us/library/ie/dn433243%28v=vs.85%29.aspx

Так что помимо 20 разных версий IE у вас есть как минимум две разных версии ОСи - Win7 и Win8. На самом деле, их больше - есть ещё Windows Phone и Windows RT, а в Windows 8 ещё есть два режима браузера - метро и десктоп. Они все отличаются. Нам повезло, мы не нашли прям заметных багов, чтобы держать отдельные ветки кода ещё и под эти оси - не факт, что вы окажетесь столь же удачливыми. Ну что, сколько там версий IE получилось? Я уже запутался, но, наверное, под сотню.

А теперь - десерт! Вот допустим вы просто пишете веб-странички, вам плевать на режимы браузера и вы вообще недоумеваете, чего париться - сайт ведь не может сам перейти в какой-нибудь режим совместимости, правда?

У меня есть для вас плохие новости, ребята. Заходите вот сюда:
iecvlist.microsoft.com/ie10/201206/iecompatviewlist.xml
И ищите там свой сайт.

Знаете, что это? Это глобальный Compatibility List, в который заносятся сайты, которые, по мнению Майкрософт, нужно показывать в каком-нибудь из режимов совместимости.

Нет, серьёзно, они отсматривают весь Интернет и составляют реестр сайтов, которые плохо себя вели!

Знаете, как сайты попадают в этот список? Майкрософт выпускает превью-версии своих браузеров. В них есть специальная кнопочка в адресной строке - показать этот сайт в режиме совместимости. Майкрософт собирает анонимную статистику - если в эту кнопку часто тыкают, сайт попадает в реестр.

Серьёзно, они этого даже не скрывают. Похоже, даже немножечко гордятся.
msdn.microsoft.com/ru-ru/library/gg699485%28v=vs.85%29.aspx

Выбраться из этого списка очень просто - написать в саппорт Майкрософт, ага.

Ну и вишенка на торте: допустим я вас убедил и вы регулируете, в каком режиме показывать страницу, с помощью специальной меты, дабы избежать ненужных проблем. Так вот, в IE11 (по крайней мере в RTM-версии, сейчас лень проверять) она не работает - факт нахождения в списке совместимости приоритетнее заданного вебмастером X-UA-Compatible!

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 07.11.2013 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft 365 Business Basic (corporate)
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Apps for business (corporate)
Microsoft 365 Business Standard (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Работа в Windows и новости компании Microsoft
Компьютерная библиотека: книги, статьи, полезные ссылки
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100