Вычисляем Internet Explorer 11 или почему Jquery распознает его как Mozilla Firefox 11

В пятницу вечером обновился до IE 11 и ушел с работы. Дома для веб-серфинга пользуюсь только Firefox’ом. Сегодня утром, придя на работу, продолжил изменять интерфейс нашего интернет-банкинга. В свежих версиях Firefox, Opera и Chrome все было отлично, а вот при попытке залогинится через IE 11 получил сообщение «Браузер Mozilla Firefox 11 не поддерживается.». Для проверки версии браузера на клиенте используется Jquery.browser, и почему-то $.browser.mozilla при IE 11 равен true.

Взглянем на USER-AGEN STRING нового IE11:

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

Заметили, что больше нет слова «MSIE»? Зато появилось «like Gecko». В общем, похоже, jQuery  не находит слова «MSIE», зато находит «Mozilla», и думает, что браузер — Mozilla Firefox. А версия — 11.

Мой способ решения не особо оригинальный, да и вообще, пора уже переходить на jQuery 2. Но пока этого еще не произошло, я решил искать в USER-AGENT явное упоминание движка IE:

1
2
3
var UserAgentString = navigator.userAgent;
 
if(UserAgentString.indexOf('Trident/7.0') + 1){alert("Hello, IE11 !");}