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

jQuery удалил $.browser С 1.9 и их последний релиз.

но вы все равно можете использовать $.браузер в качестве плагина, нашел здесь


if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){
 alert('I am chrome');
}

пользователь Endless прав,

$.browser.chrome = (typeof window.chrome === "object"); 

код лучше всего обнаружить браузер Chrome с помощью jQuery.

Если вы используете IE и добавили GoogleFrame в качестве плагина, то

var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );

код будет рассматриваться как браузер Chrome, потому что плагин GoogleFrame изменяет свойство navigator и добавляет chromeframe внутри него.


этот вопрос уже обсуждался здесь: 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
// and new IE Edge outputs to true now for window.chrome
// so use the below updated condition
var isChromium = window.chrome,
    vendorName = window.navigator.vendor,
    isOpera = window.navigator.userAgent.indexOf("OPR") > -1,
    isIEedge = window.navigator.userAgent.indexOf("Edge") > -1;

if(isChromium !== null 
  && isChromium !== undefined 
  && vendorName === "Google Inc." 
  && isOpera == false 
  && isIEedge == false) {
   // is Google chrome 
} else { 
   // not Google chrome 
}

выше сообщения советуют использовать jQuery.браузер. но API jQuery рекомендует не использовать этот метод.. (видеть документы в API). И заявляет, что его функциональность может быть перемещена в поддерживаемый командой плагин в будущем выпуске jQuery.

API jQuery рекомендует использовать jQuery.support.

причина в том, что в jQuery.браузер " использует пользовательский агент, который может быть подделан, и он фактически устарел в более поздних версиях jQuery. Если вы действительно хотите использовать $.браузер.. Вот ссылка на автономный плагин jQuery, так как он был удален из jQuery версия 1.9.1. https://github.com/gabceb/jquery-browser-plugin

лучше использовать функцию обнаружения объектов вместо обнаружения браузера.

также, если вы используете инспектор Google Chrome и перейдите на вкладку консоли. Введите "window" и нажмите enter. Затем вы сможете просмотреть свойства DOM для объекта 'окна'. При сворачивании объекта можно просмотреть все свойства, включая свойство "chrome".

Я надеюсь, что это помогает, даже хотя вопрос был в том, как поступить с jQuery. Но иногда прямой javascript более прост!


userAgent можно изменить. для большей надежности используйте глобальную переменную, указанную chrome

$.browser.chrome = (typeof window.chrome === "object");

var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );

хотя это не Jquery, я сам использую jquery, но для обнаружения браузера я использовал скрипт на на этой странице несколько раз. Он обнаруживает все основные браузеры, а потом некоторые. Работа в значительной степени сделана для вас.


к сожалению, из-за последнего обновления Opera !!window.chrome (и другие тесты на объекте window) при тестировании в Opera возвращает true.

Conditionizr заботится об этом для вас и решает проблему Opera:

conditionizr.add('chrome', [], function () {
    return !!window.chrome && !/opera|opr/i.test(navigator.userAgent);
});

я настоятельно рекомендую использовать его, поскольку ни один из вышеперечисленных теперь не действителен.

Это позволяет делать:

if (conditionizr.chrome) {...}

Conditionizr заботится о другом браузере, обнаруживает и гораздо быстрее и надежнее, чем с jQuery хаки.


в качестве быстрого добавления, и я удивлен, что никто не подумал об этом, вы можете использовать in оператор:

"chrome" in window

очевидно, что это не использует JQuery, но я решил, что положу его, так как это удобно для случаев, когда вы не используете внешние библиотеки.


когда я тестирую ответ @IE, я всегда получаю "true". Лучший способ-это то, что работает также @IE:

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);

как описано в этот ответ: https://stackoverflow.com/a/4565120/1201725