Я хочу отбросить пользователей нашего веб-сайта на страницу с ошибкой, если они используют версию Internet Explorer
до v9. Это просто не стоит нашего времени и денег для поддержки IE pre-v9
. Пользователи всех других браузеров, отличных от IE, в порядке и не должны отскакивать. Здесь предлагается код:
if(navigator.appName.indexOf("Internet Explorer")!=-1){ //yeah, he 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
, делая этот подход абсолютно бесполезным.
Любые другие очевидные проблемы, о которых нужно знать?