Как определить, является ли браузер 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.

Другие вопросы по тегам