Я хочу возвращать пользователей нашего веб-сайта на страницу с ошибкой, если они используют версию 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
}
}
Подойдет ли этот код?
Чтобы возглавить несколько комментариев, которые, вероятно, придут мне в голову:
- Да, я знаю, что пользователи могут подделать свою
useragent
строку. Меня это не волнует. - Да, я знаю, что профессионалы в области программирования предпочитают вынюхивать поддержку функций, а не браузер, но я не думаю, что такой подход имеет смысл в данном случае. Я уже знаю, что все (соответствующие) браузеры, отличные от IE, поддерживают нужные мне функции, а все
pre-v9 IE
браузеры - нет. Проверка функции за функцией на всем сайте была бы пустой тратой. - Да, я знаю, что кто-то, пытающийся получить доступ к сайту с помощью
IE v1
(или> = 20), не получит для 'badBrowser' значение true, и страница с предупреждением не будет отображаться должным образом. Мы готовы пойти на такой риск. - Да, я знаю, что у Microsoft есть «условные комментарии», которые можно использовать для точного определения версии браузера. IE больше не поддерживает условные комментарии с
IE 10
, что делает этот подход абсолютно бесполезным.
Есть ли другие очевидные проблемы, о которых следует знать?
lt IE 9
условное выражение, будет работать в IE8 и ниже и больше нигде. Так просто. Это единственное, что Microsoft сделала правильно с IE. - person Jimbo Jonny   schedule 22.10.2015