Мне интересно, как я могу определить, использует ли пользователь, просматривающий мой веб-сайт, Internet Explorer 11 или более ранние версии с Javascript.
Он должен быть совместим и работать со всеми этими версиями.
Как этого добиться?
@AjAX. Trident предназначен только для IE11, более старые версии IE использовали MSIE
@RyanWilson Нет. Это не. Trident в целом сводится к IE 6. Оба.
@AjAX в порядке. Не знал, что оба они присутствуют в IE6, но все же лучше проверить оба, если на каком-то древнем компьютере установлена более старая версия, чем IE6.
@DerekBrown, это неверно, потому что я не хочу обнаруживать только версию 11, я получил ответ, поэтому спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вот и все, это должно сработать для вас:
//Per Icycool, one liner
//function isIE(){
// return window.navigator.userAgent.match(/(MSIE|Trident)/);
// }
function isIE() {
const ua = window.navigator.userAgent; //Check the userAgent property of the window.navigator object
const msie = ua.indexOf('MSIE '); // IE 10 or older
const trident = ua.indexOf('Trident/'); //IE 11
return (msie > 0 || trident > 0);
}
//function to show alert if it's IE
function ShowIEAlert(){
if (isIE()){
alert("User is using IE");
}
}
Спасибо, я хочу показать предупреждение, если это правда. Вы можете мне с этим помочь?
@Danny добавил в пример еще одну функцию, чтобы показать предупреждение, если isIE () возвращает true.
window.navigator.userAgent.match(/(MSIE|Trident)/), если вы хотите сделать это в 1 строку
@Icycool Спасибо за предложение. Я добавил это к ответу как еще один вариант.
@Icycool Зачем группировать регулярное выражение? window.navigator.userAgent.match(/MSIE|Trident/) должен это делать.
@Timm uhm просто старая привычка использовать строковый шаблон в случае, если в регулярном выражении есть другие части. Вы правы, в этом случае скобки не нужны.
Используйте var, а не const, если вы хотите быть совместимыми со старыми версиями IE!
Большое спасибо. спас мой день
@ Siva-Dev-Wizard Добро пожаловать. Рад помочь :)
Хотелось бы упорядочить правильный ответ. Это возвращает true или false:
function is_IE() {
return (window.navigator.userAgent.match(/MSIE|Trident/) !== null);
}
Проверьте режим документа - свойство только IE:
if (document.documentMode)
alert('this is IE');
Более простая версия, возвращает логическое значение
function isIE() {
return !!window.navigator.userAgent.match(/MSIE|Trident/);
}
FYI /MSIE|Trident/.test(window.navigator.userAgent) возвращает bool.
Если
stringTridentнаходится вwindow.navigator.userAgent.