Я искал решение для себя, поскольку jQuery 1.9.1 и выше удалили функциональность $.browser
. Я придумал эту маленькую функцию, которая работает для меня.
Ему нужна глобальная переменная (я назвал мой _browser), чтобы проверить, какой это браузер. Я написал jsfiddle , чтобы проиллюстрировать, как его можно использовать, конечно, его можно расширить для других браузеров, просто добавив тест для _browser.foo, где foo - имя браузера. Я сделал только популярные.
detectBrowser ()
_browser = {};
function detectBrowser() {
var uagent = navigator.userAgent.toLowerCase(),
match = '';
_browser.chrome = /webkit/.test(uagent) && /chrome/.test(uagent) &&
!/edge/.test(uagent);
_browser.firefox = /mozilla/.test(uagent) && /firefox/.test(uagent);
_browser.msie = /msie/.test(uagent) || /trident/.test(uagent) ||
/edge/.test(uagent);
_browser.safari = /safari/.test(uagent) && /applewebkit/.test(uagent) &&
!/chrome/.test(uagent);
_browser.opr = /mozilla/.test(uagent) && /applewebkit/.test(uagent) &&
/chrome/.test(uagent) && /safari/.test(uagent) &&
/opr/.test(uagent);
_browser.version = '';
for (x in _browser) {
if (_browser[x]) {
match = uagent.match(
new RegExp("(" + (x === "msie" ? "msie|edge" : x) + ")( |\/)([0-9]+)")
);
if (match) {
_browser.version = match[3];
} else {
match = uagent.match(new RegExp("rv:([0-9]+)"));
_browser.version = match ? match[1] : "";
}
break;
}
}
_browser.opera = _browser.opr;
delete _browser.opr;
}
Чтобы проверить, является ли текущий браузер Opera, вы должны сделать
if (_browser.opera) { // Opera specific code }
Редактировать Исправлено форматирование, исправлено обнаружение для IE11 и Opera / Chrome, изменено на browserResult from result. Теперь порядок клавиш _browser
не имеет значения. Обновлена jsFiddle ссылка.
2015/08/11 Редактировать Добавлен новый тестовый пример для Internet Explorer 12 (EDGE), исправлена небольшая проблема с регулярным выражением. Обновлена jsFiddle ссылка.