Как определить, является ли браузер Chrome с помощью jQuery?
У меня есть небольшая проблема с функцией, работающей в Chrome, которая работает правильно в Safari, в обоих браузерах webkit...
Мне нужно настроить переменную в функции для Chrome, но не для Safari.
К сожалению, я использовал это, чтобы определить, является ли это браузером WebKit:
if ($.browser.webkit) {
Но мне нужно обнаружить:
if ($.browser.chrome) {
Есть ли способ написать подобное утверждение (рабочая версия приведенного выше)?
10 ответов
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());
if($.browser.chrome){
............
}
ОБНОВЛЕНИЕ:(10x до @Mr. Bacciagalupe)
JQuery удалил $.browser
от 1.9 и их последней версии.
Но вы все равно можете использовать $.browser в качестве отдельного плагина, найденного здесь
if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){
alert('I am chrome');
}
Этот вопрос уже обсуждался здесь: JavaScript: как узнать, является ли браузер пользователя Chrome?
Пожалуйста, попробуйте это:
var isChromium = window.chrome;
if(isChromium){
// is Google chrome
} else {
// not Google chrome
}
Но более полный и точный ответ был бы следующим: IE11, IE Edge и Opera также вернутся. true
за window.chrome
Так что используйте ниже:
// please note,
// that IE11 now returns undefined again for window.chrome
// and new Opera 30 outputs true for window.chrome
// but needs to check if window.opr is not undefined
// and new IE Edge outputs to true now for window.chrome
// and if not iOS Chrome check
// so use the below updated condition
var isChromium = window.chrome;
var winNav = window.navigator;
var vendorName = winNav.vendor;
var isOpera = typeof window.opr !== "undefined";
var isIEedge = winNav.userAgent.indexOf("Edge") > -1;
var isIOSChrome = winNav.userAgent.match("CriOS");
if (isIOSChrome) {
// is Google Chrome on IOS
} else if(
isChromium !== null &&
typeof isChromium !== "undefined" &&
vendorName === "Google Inc." &&
isOpera === false &&
isIEedge === false
) {
// is Google Chrome
} else {
// not Google Chrome
}
Над постами советую использовать jQuery.browser. Но jQuery API рекомендует не использовать этот метод.. (см. DOCS в API). И заявляет, что его функциональность может быть перенесена в поддерживаемый командой плагин в будущем выпуске jQuery.
JQuery API рекомендует использовать jQuery.support
,
Причина в том, что jQuery.browser использует пользовательский агент, который может быть подделан, и на самом деле он не рекомендуется в более поздних версиях jQuery. Если вы действительно хотите использовать $.browser.. Вот ссылка на автономный плагин jQuery, так как он был удален из jQuery версии 1.9.1. https://github.com/gabceb/jquery-browser-plugin
Лучше использовать функцию обнаружения объектов вместо обнаружения в браузере.
Также, если вы используете инспектор Google Chrome и перейдите на вкладку консоли. Введите "окно" и нажмите Enter. Тогда вы сможете просмотреть свойства DOM для "объекта окна". Когда вы свернете объект, вы сможете просмотреть все свойства, включая свойство 'chrome'.
Надеюсь, это поможет, хотя вопрос был в том, как это сделать с помощью jQuery. Но иногда прямой JavaScript более прост!
Пользователь Endless прав,
$.browser.chrome = (typeof window.chrome === "object");
Код лучше всего определять браузером Chrome с помощью jQuery.
Если вы используете IE и добавили GoogleFrame в качестве плагина, тогда
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
код будет восприниматься как браузер Chrome, потому что плагин GoogleFrame изменяет свойство навигатора и добавляет в него chromeframe.
userAgent может быть изменен. для большей надежности используйте глобальную переменную, указанную в chrome
$.browser.chrome = (typeof window.chrome === "object");
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
if(navigator.vendor.indexOf('Goog') > -1){
//Your code here
}
Как быстрое дополнение, и я удивлен, что никто не подумал об этом, вы можете использовать in
оператор:
"chrome" in window
Очевидно, что это не использует JQuery, но я решил, что я бы сказал, потому что это удобно для тех случаев, когда вы не используете какие-либо внешние библиотеки.
Хотя это не Jquery, я сам использую jquery, но для обнаружения в браузере я несколько раз использовал скрипт на этой странице. Он обнаруживает все основные браузеры, а затем и некоторые. Работа в основном сделана для вас.
Когда я проверяю ответ @IE, я всегда получаю "правду". Лучший способ это то, что работает также @IE:
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
Как описано в этом ответе: /questions/26985066/javascript-kak-uznat-yavlyaetsya-li-brauzer-polzovatelya-chrome/26985103#26985103
К сожалению, из-за последнего обновления Opera !!window.chrome
(и другие тесты на объекте окна) при тестировании в Opera возвращает true.
Conditionizr позаботится об этом за вас и решит проблему Opera:
conditionizr.add('chrome', [], function () {
return !!window.chrome && !/opera|opr/i.test(navigator.userAgent);
});
Я настоятельно рекомендую использовать его, так как ни один из вышеперечисленных не является действительным.
Это позволяет вам делать:
if (conditionizr.chrome) {...}
http://conditionizr.com/ заботится о других обнаружениях браузера и работает намного быстрее и надежнее, чем взломы jQuery.