Internet Explorer 11 ховається від веб-сайтів

Після недавнього релізу першої прев'ю-версіїInternet Explorer 11 на платформі Windows 8.1 можна помітити окрім появи такого смачного функціоналу як WebGL, передзавантаження даних, підтримка FlexBox, SPDY та інших веб-стандартів ще й приховування ідентифікації браузера як IE .

Раніше вже ходили чутки про те, що браузер Internet Explorer тепер у рядку user-agent, що передається на сервер, додає інформацію "like Gecko", а тепер IE11 взагалі віддає на сервер змінну user-agent наступного вигляду:

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

Саме так, прев'ю-версія IE11 не додає інформацію "MSIE" або IE у рядок user-agent як це було в IE10 і всіх попередніх версіях, тим самим багато веб-сайтів, які раніше за допомогою даного рядка визначали браузер, тепер не оброблятимуть IE як сторонній браузер, а оброблятимуть у "загальному" потоці. Варто зазначити, що перші збірки IE 11 (до прев'ю-версії) мали повний рядок user-agent з використанням ідентифікатора IE11.

  • navigator.appName повертає "Netscape".
  • navigator.product повертає "Gecko".

Ще один метод attachEvent, що часто використовується, був видалений з Internet Explorer 11, як і detachEvent , рекомендується використовувати загальновизнаний аналог addEventListener .

Крім цього було усунуто такі можливості:

  • window.execScript() – аналог eval().
  • window.doScroll() – скролінг сторінок у IE.
  • script.onreadystatechange – перевірка готовності скриптів.
  • script.readyState - перевірка завантаження скриптів.
  • document.selection – отримання виділеного тексту.
  • document.createStyleSheet – додавання нового стилю.
  • style.styleSheet – визначення стилю ввиді об'єкта.

Всі аналогічні можливості давно описані та реалізовані в сучасних браузерах, які тепер IE також підтримує, тому залишки минулого будуть видалені з браузера.

Компанія Microsoft пішла досить складним, але оригінальним шляхом, усунення застарілих функцій і методів - це правильне рішення з боку компанії, але це може призвести до неробочого стану багатьох сайтів в IE.

Що ж зробили у Microsoft? Заміна рядка user-agent дозволяє змінити поведінку веб-сайтів, які тепер не ідентифікуватимуть браузер як IE і відповідно оброблятимуть його окремими правилами, а вважати, що це браузер на двигуні Gecko і як результат - веб-сайти коректно працюватимуть у новому IE11, але поки що цю теорію ще слід перевірити практично, чим зараз Microsoft і займається.

Подібний хід застосувалисаме у прев'ю-версії браузера IE11, це вигідне рішення додасть час на моніторинг та виправлення проблем, які можуть виникнути у тестової групи (користувачів, які скачають та встановлять Internet Explorer 11 Preview), перевіривши новий підхід - Кінцеві користувачі фінальної версії IE11 отримають робоче рішення.