Я хочу добавить пользователей нашего веб-сайта на страницу с ошибкой, если они используют версию 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
, что делает этот подход абсолютно бесполезным.
Любые другие очевидные проблемы, о которых нужно знать?
Ответы:
Это мой любимый способ сделать это. Это дает максимальный контроль. (Примечание: условные операторы поддерживаются только в IE5 - 9.)
Сначала настройте свои классы ie правильно
Затем вы можете просто использовать CSS для создания исключений стиля или, если вам нужно, вы можете добавить несколько простых JavaScript:
Спасибо Полу Ирландскому .
источник
Error: Saw <!-- within a comment. Probable cause: Nested comment (not allowed). At line 5, column 21 if gt IE 8]><!--><html
Вернуть версию IE или, если нет, IE вернуть false
Пример:
или
или
источник
"mozilla/5.0 (windows nt 6.3; wow64; trident/7.0; .net4.0e; .net4.0c; media center pc 6.0; .net clr 3.5.30729; .net clr 2.0.50727; .net clr 3.0.30729; rv:11.0) like gecko"
if (isIE () && isIE () < 9) {
Если никто не добавил
addEventLister
-метод и вы используете правильный режим браузера, вы можете проверить IE 8 или менее сУстаревший Internet Explorer и attachEvent (MDN)
источник
Используйте условные комментарии. Вы пытаетесь обнаружить пользователей IE <9, и в этих браузерах будут работать условные комментарии; в других браузерах (IE> = 10 и не-IE) комментарии будут обрабатываться как обычные HTML-комментарии, какими они и являются.
Пример HTML:
Вы также можете сделать это исключительно с помощью скрипта, если вам нужно:
источник
Чтобы легко обнаружить MSIE (v6 - v7 - v8 - v9 - v10 - v11):
источник
Вот как AngularJS проверяет IE
источник
Для надежной фильтрации IE8 и более старых версий можно использовать проверку глобальных объектов :
источник
Определение версии IE с использованием функции обнаружения (IE6 +, браузеры до IE6 определяются как 6, возвращает ноль для браузеров не IE):
Изменить: я создал репо Bower / Npm для вашего удобства: т.е.-версия
Обновить:
более компактная версия может быть записана в одну строку как:
источник
Эта функция возвращает номер основной версии IE в виде целого числа или,
undefined
если браузер не является Internet Explorer. Это, как и все решения пользовательских агентов, допускает подделку пользовательских агентов (которая была официальной функцией IE начиная с версии 8).источник
console.log(!!match && parseInt(match[1]))
,console.log(parseInt(match[1]))
иconsole.log(match)
, но без результата ни с одним из них.getIEVersion()
. Например:if (getIEVersion() < 9) {/* IE 8 or below */}
if (!getIEVersion()) {/* Not IE */}
Определить IE в JS, используя условные комментарии
источник
Это работает для меня. Я использую его как перенаправление на страницу, которая объясняет, почему нам не нравится <IE9, и даю ссылки на браузеры, которые мы предпочитаем.
источник
Ваш код может выполнить проверку, но, как вы и думали, если кто-то попытается получить доступ к вашей странице с помощью IE v1 или> v19, не получит ошибку, поэтому может быть более безопасно выполнить проверку с помощью выражения Regex, как показано ниже:
источник
Условные комментарии больше не поддерживаются в IE начиная с версии 10, как указано на справочной странице Microsoft .
затем используйте:
источник
version 11
РЕДАКТИРОВАТЬ: Этот код УДИВИТЕЛЬНЫЙ! ха-ха, это дает объект со всем внутри. Версия 11, но docModeIR равен 9. Спасибо!Например, 10 и 11:
Вы можете использовать js и добавить класс в html, чтобы поддерживать стандарт условных комментариев :
Или используйте lib как bowser:
https://github.com/ded/bowser
Или модернизр для обнаружения функций:
http://modernizr.com/
источник
Для обнаружения Internet Explorer 10 | 11 вы можете использовать этот маленький скрипт сразу после тега body:
В моем случае я использую библиотеку jQuery, загруженную в голове.
источник
На это ответили до смерти, но это все, что тебе нужно.
источник
источник
По мнению Microsoft , следующее решение является лучшим, оно также очень простое:
источник
Я собираюсь рекомендовать не переписывать этот код в который раз. Я бы порекомендовал вам использовать библиотеку Conditionizr ( http://conditionizr.com/ ), которая может тестировать определенные версии IE, а также другие браузеры, операционные системы и даже наличие или отсутствие дисплеев Retina.
Включите код только для тех тестов, которые вам нужны, и вы также получите выгоду от протестированной библиотеки, которая прошла много итераций (и которую было бы легко обновить, не нарушая ваш код).
Он также прекрасно сочетается с Modernizr, который может обрабатывать все те случаи, когда вам лучше тестировать определенные возможности, а не конкретный браузер.
источник
Мне так нравится
источник
Этот подход к обнаружению IE объединяет сильные стороны и позволяет избежать недостатков ответа jKey с помощью условных комментариев и ответа Оуэна с помощью пользовательских агентов.
Подход Оуэна может не сработать в IE 5 & 6 (сообщение 7) и подвержен подделке UA, но он может обнаруживать версии IE> = 10 (теперь также включая 12, что датирует ответ Оуэна).
Это можно использовать для установки полезных классов в ваш документ, содержащий версию IE:
Обратите внимание, что он обнаруживает используемый режим совместимости, если IE находится в режиме совместимости. Также обратите внимание, что версия IE в основном полезна для более старых версий (<10); более высокие версии в большей степени соответствуют стандартам, и, вероятно, лучше вместо этого проверять наличие функций, используя что-то вроде modernizr.js.
источник
Я сделал удобный миксин для этого.
источник
или просто
источник
Самый полный JS-скрипт, который я нашел для проверки версий IE, это http://www.pinlady.net/PluginDetect/IE/ . Вся библиотека находится по адресу http://www.pinlady.net/PluginDetect/Browsers/ .
В IE10 условные операторы больше не поддерживаются.
В IE11 пользовательский агент больше не содержит MSIE. Кроме того, использование пользовательского агента ненадежно, поскольку его можно изменить.
Используя JS-скрипт PluginDetect, вы можете обнаружить IE и определить точные версии, используя очень специфичный и тщательно разработанный код, предназначенный для конкретных версий IE. Это очень полезно, когда вам важно, с какой версией браузера вы работаете.
источник
Я понимаю, что немного опоздал на вечеринку здесь, но я проверил простой однострочный способ дать отзыв о том, является ли браузер IE и какая версия из 10 была ниже. Я не кодировал это для версии 11, поэтому, возможно, для этого потребуется небольшая поправка.
Однако это код, он работает как объект, у которого есть свойство и метод, и опирается на обнаружение объекта, а не на очистку объекта навигатора (который в значительной степени ошибочен, поскольку его можно подделать).
Использование -
isIE.browser
это свойство, которое возвращает логическое значение и опирается на условные комментарии, метод,isIE.detectedVersion()
который возвращает число от 5 до 10. Я предполагаю, что если значение меньше 6, вы находитесь на серьезной территории старой школы и у вас будет что-то более громкое, чем один лайнер и все, что выше 10, и вы на более новой территории. Я читал кое-что о IE11, не поддерживающем условные комментарии, но я не полностью исследовал его, возможно, на более поздний срок.Во всяком случае, как это, и для одного лайнера, он будет охватывать основы браузера IE и определения версии. Это далеко от совершенства, но это маленький и легко исправляется.
Просто для справки, и если у кого-то есть какие-либо сомнения относительно того, как на самом деле реализовать это, тогда должно помочь следующее условие.
источник
Обнаружение IE и его версий не может быть проще, и все, что вам нужно, это немного нативный / ванильный Javascript:
И это способ использовать его:
,
Работает во всех версиях IE, включая более высокие версии в более низком режиме совместимости View / Mode, и
documentMode
является собственностью IE.источник
Если вам нужно выбрать версию IE Browser, вы можете следовать приведенному ниже коду. Этот код хорошо работает для версии IE6 до IE11
источник
Окно запуска IE10 будет автоматически обновлено до IE11 + и будет стандартизировано W3C
В настоящее время нам не нужно поддерживать IE8-
источник
источник
источник