Обнаружение версии IE (до v9) в JavaScript

Я хочу направлять пользователей нашего веб-сайта на страницу с ошибкой, если они используют версию Internet Explorerдо v9. Просто не стоит тратить время и деньги на поддержку IE pre-v9. Пользователи всех других браузеров, отличных от IE, в порядке, и их не следует отбрасывать. Вот предлагаемый код:

if(navigator.appName.indexOf("Internet Explorer")!=-1){     //yeah, he's using IE
    var badBrowser=(
        navigator.appVersion.indexOf("MSIE 9")==-1 &&   //v9 is ok
        navigator.appVersion.indexOf("MSIE 1")==-1  //v10, 11, 12, etc. is fine too
    );

    if(badBrowser){
        // navigate to error page
    }
}

Сработает ли этот код?

Во избежание нескольких комментариев, которые, вероятно, будут появляться в моем адресе:

  1. Да, я знаю, что пользователи могут подделать строку useragent. Я не беспокоюсь.
  2. Да, я знаю, что профессионалы в области программирования предпочитают вынюхивать поддержку функций, а не тип браузера, но я не думаю, что в данном случае такой подход имеет смысл. Я уже знаю, что все (соответствующие) не-IE браузеры поддерживают функции, которые мне нужны, и что все браузеры IE до версии 9не поддерживают. Проверка функции за функцией по всему сайту была бы пустой тратой времени.
  3. Да, я знаю, что кто-то, пытающийся получить доступ к сайту с помощью IE v1(или >= 20), не получит для параметра «badBrowser» значение true, и страница с предупреждением не будет отображаться должным образом. Это риск, на который мы готовы пойти.
  4. Да, я знаю, что у Microsoft есть «условные комментарии», которые можно использовать для точного определения версии браузера. IE больше не поддерживает условные комментарии с IE 10, что делает этот подход абсолютно бесполезным.

Какие-либо другие очевидные проблемы, о которых следует знать?

246
задан Alex.K. 19 July 2016 в 23:41
поделиться