Давайте я розповім вам, який це чудовий процес.
Скільки браузерів ви підтримуєте, дорогі розробники? Не так давно, п'ять років тому, цей список був досить простий: IE6, IE7, Opera, Firefox, Chrome. П'ять браузерів, плюс деякі мінорні варіації між 2 і 3 Firefox і 9 і 10 Оперою.
Скільки браузерів ми підтримуємо тепер?
Firefox, Chrome і Opera нікуди не поділися. Файрфокс і Хром давно перейшли на короткий релізний цикл, останній артефакт неавтоматичного поновлення (Firefox 3.6) не так давно нарешті загубився з приладів. Опера повинна перейти на той же цикл найближчим часом - та й останні версії Опери / Престо особливої головного болю не додавали. Додався яндекс.браузер, який внутрі той же хромиум, хоч і оновлюється рідше.
Як би не так! Слухайте уважно.
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.
Шо. Це ще не все?!
Почнемо з того, що IE11 поставляється ось з таким юзер-агентом:Mozilla / 5.0 (Windows NT 6.3; Trident / 7.0; rv: 11.0) like Gecko
При цьому абсолютно ті ж люди між останнім Developer Preview IE11 і фінальним RTM релізом беруть і відривають вендорськіх префікси і ламають ще пару десятків Зворотна сумісність, про що люб'язно повідомляють в своєму msdn-е: msdn.microsoft.com/en-us/library/ ie / dn304886% 28v = vs.85% 29.aspx
Фіг з ним, з Developer Preview. В їх прекрасної поделке потрібно відрізняти версію осі, під якою вона працює! Я серйозно.
Ось сидять люди. У трудовій у них, напевно, написано щось типу Senior Software Architect. Придумують стандарт PointerEvents. в якому, чин чінарём, все по-дорослому - спеціальний прапор navigator.pointerEventsEnabled показує, чи підтримує браузер пойнтер-події чи ні. Щоб, розумієш, ніхто нічого по юзер-агента не детектив, а все як в нормальних браузерах.
А потім раптово з'ясовується, що у тих же людей обробка жестів падає в IE10 / Win7. Ось прям в msdn-е так і написано:
Note The APIs we discuss in this section are not supported in Windows 7 or earlier.
Так що крім 20 різних версій IE у вас є як мінімум дві різні версії Осі - Win7 і Win8. Насправді, їх більше - є ще Windows Phone і Windows RT, а в Windows 8 ще є два режими браузера - метро і десктоп. Вони все відрізняються. Нам пощастило, ми не знайшли прям помітних багів, щоб тримати окремі гілки коду ще й під ці осі - не факт, що ви опинитеся настільки ж вдалими. Ну що, скільки там версій IE вийшло? Я вже заплутався, але, напевно, під сотню.
А тепер - десерт! Ось припустимо ви просто пишете веб-сторінки, вам плювати на режими браузера і ви взагалі дивується, чого паритися - сайт адже не може сам перейти в який-небудь режим сумісності, правда?
Ні, серйозно, вони проглядають весь Інтернет і складають реєстр сайтів, які погано себе вели!
Ну і вишенька на торті: припустимо я вас переконав і ви регулюєте, в якому режимі показувати сторінку, за допомогою спеціальної позначки. щоб уникнути непотрібних проблем. Так ось, в IE11 (принаймні в RTM-версії, зараз лінь перевіряти) вона не працює - факт знаходження в списку сумісності приоритетнее заданого вебмастером X-UA-Compatible!
Дорога Microsoft! Припини, будь ласка, над нами знущатися і вкрути движок Gecko в свій так би мовити продукт.