Я вызываю функцию, подобную приведенной ниже, нажимая на div с определенным классом.
Можно ли при запуске функции проверить, использует ли пользователь Internet Explorer, и отменить / отменить его, если они используют другие браузеры, чтобы он работал только для пользователей IE? Все пользователи здесь будут на IE8 или более поздних версиях, поэтому мне не нужно было бы освещать IE7 и более ранние версии.
Если бы я мог сказать, какой браузер они используют, это было бы здорово, но это не обязательно.
Пример функции:
$('.myClass').on('click', function(event)
{
// my function
});
javascript
jquery
internet-explorer
browser-detection
user2571510
источник
источник
With modern web development, it's bad practice to support non-Chromium-based browsers (with Safari not considered to be Chromium-based at all)
. Извините, но это безумие должно закончиться в какой-то момент и каким-то образом ...Ответы:
Используйте ниже метод JavaScript:
Вы можете найти подробности на сайте поддержки Microsoft ниже:
Как определить версию браузера из скрипта
Обновление: (поддержка IE 11)
источник
if (msie > 0)
вводит в заблуждение. Если значение не найдено, функция indexOf () возвращает -1, а не 0. Следовательно,if (msie > -1)
это будет более объяснительным.IE 11
: stackoverflow.com/a/21712356/114029/Edge\/|Trident\/|MSIE /.test(window.navigator.userAgent)
Я знаю, что это работает на 10 и 11. Если вы можете проверить <IE9 и Edge, отредактируйте ответ.Спустя несколько лет браузер Edge теперь использует Chromium в качестве движка рендеринга.
К сожалению, проверка на IE 11 все еще вещь.
Вот более простой подход, поскольку древние версии IE должны исчезнуть.
Вот мой старый ответ (2014):
В Edge строка User Agent изменилась.
Пример использования:
Строка по умолчанию IE 10:
Строка по умолчанию IE 11:
Строка по умолчанию Edge 12:
Строка по умолчанию Edge 13 (thx @DrCord):
Строка по умолчанию Edge 14:
Строка по умолчанию Edge 15:
Строка по умолчанию Edge 16:
Строка по умолчанию Edge 17:
Строка по умолчанию Edge 18 (предварительный просмотр Insider):
Тест в CodePen:
http://codepen.io/gapcode/pen/vEJNZN
источник
Если все, что вы хотите знать, это браузер IE или нет, вы можете сделать это:
Обновление 1: лучший метод
Я рекомендую это сейчас. Это все еще очень читаемый и намного меньше кода :)
Спасибо JohnnyFun в комментариях за укороченный ответ :)
Обновление 2: тестирование IE в CSS
Во-первых, если вы можете, вы должны использовать
@supports
операторы вместо JS для проверки, поддерживает ли браузер определенную функцию CSS.(Обратите внимание, что IE вообще не поддерживает
@supports
и будет игнорировать любые стили, помещенные внутри@supports
оператора.)Если проблема не может быть решена,
@supports
то вы можете сделать это:(Примечание:
classList
относительно новый для JS, и я думаю, что из браузеров IE он работает только в IE11. Возможно, также и в IE10.)Если вы используете SCSS (Sass) в своем проекте, это можно упростить до:
Обновление 3: добавление Microsoft Edge (не рекомендуется)
Если вы также хотите добавить Microsoft Edge в список, вы можете сделать следующее. Однако я не рекомендую его, поскольку Edge - гораздо более компетентный браузер, чем IE.
источник
ms_ie = !!ua.match(/MSIE|Trident/)
~
имеет какое-либо значение?Это возвращается
true
для любой версии Internet Explorer:userAgent
Параметр является необязательным , и он по умолчанию агента пользователя браузера.источник
Вот как это делает команда Angularjs ( v 1.6.5 ):
Затем есть несколько строк кода, разбросанных по всему, используя его как число, такое как
а также
источник
document.documentMode
поддерживается IE8 +. Это будет'undefined'
для Edge или Chrome / FireFox .... Я изменил этот код такvar IEver = window.document.documentMode || (window.attachEvent? 1 : 99);
, чтобы он возвращал точную версию IE для IE8 +, 99 для браузеров, отличных от IE (обычно это будет современный браузер), и 1 для старого IE5-7. Это написано так, потому что мы обычно нуждаемся в специальной работе только для некоторых старых IE. Итак,if (IEver < 9) { ... }
значит, если это старый IEВы можете использовать объект навигатор для определения пользователя-навигатора, вам не нужен jquery для него
http://www.javascriptkit.com/javatutors/navigator.shtml
источник
Используя ответы выше; простое и сжатое возвращаемое логическое значение:
var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
источник
Метод 01:
$ .browser устарел в jQuery версии 1.3 и удален в 1.9
Способ 02:
использование условных комментариев
Способ 03:
Способ 04:
использование JavaScript / ручное обнаружение
Ссылка Ссылка
источник
.ie10
класса является одним из лучших вариантов, если вы делаете некоторые исправления CSS только для ie10. Так как Internet Explorer 10 добавляет".ie10"
класс к элементу HTML<html class="ie10">
, вы можете использовать его как.ie10 .myclass {//some css here}
Я просто хотел проверить, был ли браузер IE11 или старше, потому что, ну, они дерьмо.
источник
источник
Используя модернизр
источник
Или эта действительно короткая версия возвращает true, если браузер Internet Explorer:
источник
Еще одна простая (но удобочитаемая) функция для определения, является ли браузер IE или нет (игнорируя Edge, что совсем неплохо):
источник
Если вы не хотите использовать useragent, вы также можете просто сделать это, чтобы проверить, является ли браузер IE. Закомментированный код фактически выполняется в браузерах IE и превращает «ложь» в «истину».
источник
Я знаю, что это старый вопрос, но в случае, если кто-то снова столкнется с ним и столкнется с проблемами при обнаружении IE11, вот рабочее решение для всех текущих версий IE.
источник
я использовал это
источник
Здесь много ответов, и я хотел бы добавить свой вклад. IE 11 был такой задницей относительно flexbox (см. Все его проблемы и несоответствия здесь ), что мне действительно нужен был простой способ проверить, использует ли пользователь какой-либо браузер IE (до 11 включительно), но исключая Edge, потому что Edge на самом деле довольно мило
Основываясь на ответах, приведенных здесь, я написал простую функцию, возвращающую глобальную логическую переменную, которую затем можно использовать в дальнейшем. Это очень легко проверить на IE.
Таким образом, вам нужно выполнить поиск только один раз, и вы сохраните результат в переменной, а не извлекаете результат при каждом вызове функции. (Насколько я знаю, вам даже не нужно ждать документа, готового для выполнения этого кода, так как пользовательский агент не связан с DOM.)
источник
Попробуйте это, если вы используете версию jquery> = 1.9 ,
Если используется версия jQuery <1.9 ($ .browser был удален в jQuery 1.9), используйте вместо этого следующий код:
источник
Решение @ SpiderCode не работает с IE 11. Вот лучшее решение, которое я использовал впредь в своем коде, где мне нужно обнаружение браузера для определенной функции.
IE11 больше не сообщает как MSIE, согласно этому списку изменений, намеренно, чтобы избежать неправильного обнаружения.
Если вы действительно хотите знать, что это IE, вы можете обнаружить Trident / строку в пользовательском агенте, если navigator.appName возвращает Netscape, что-то вроде (непроверенное);
Благодаря этому ответу
источник
Ниже я нашел элегантный способ сделать это во время поиска в Google ---
источник
Обновите ответ SpiderCode, чтобы исправить проблемы, при которых строка «MSIE» возвращает -1, но соответствует «Trident». Раньше он возвращал NAN, но теперь возвращает 11 для этой версии IE.
источник
Вы можете дешифровать все Internet Explorer (последняя протестированная версия 12).
Смотрите здесь https://jsfiddle.net/v7npeLwe/
источник
Вы должны увидеть результат в консоли, пожалуйста, используйте Chrome Inspect.
источник
Я поместил этот код в функцию готовности документа, и он запускается только в Internet Explorer. Протестировано в Internet Explorer 11.
источник
Это работает только ниже версии IE 11.
console.log("version number",ie_version);
источник
Функция JavaScript для определения версии Internet Explorer или Edge
источник
Necromancing.
Чтобы не зависеть от строки user-agent, просто проверьте несколько свойств:
Кроме того, это обнаруживает новый Chredge (Анахайм):
И это обнаруживает хром:
И это Сафари:
источник
Попробуйте сделать это
источник
Я думаю, что это поможет вам здесь
источник
Вы можете использовать,
$.browser
чтобы получить имя, поставщика и информацию о версии.Смотрите http://api.jquery.com/jQuery.browser/
источник