Подтвердить что ты не робот

Как определить, работает ли браузер Chrome с помощью jQuery?

У меня есть небольшая проблема с функцией, работающей в chrome, которая работает правильно в Safari, как в браузерах webkit...

Мне нужно настроить переменную в функции для Chrome, но не для Safari.

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

if ($.browser.webkit) {

Но мне нужно обнаружить:

if ($.browser.chrome) {

Можно ли написать аналогичный оператор (рабочая версия выше)?

4b9b3361

Ответ 1

$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()); 

if($.browser.chrome){
  ............

}

UPDATE: (от 10x до @Mr. Bacciagalupe)

jQuery удалил $.browser из 1.9 и их последний выпуск.

Но вы все равно можете использовать $.browser как автономный плагин, найденный здесь

Ответ 2

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

Ответ 3

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

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

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

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

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

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

Ответ 4

Этот вопрос уже обсуждался здесь: 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.browser. Но API jQuery рекомендует не использовать этот метод.. (см. DOCS в API). И заявляет, что его функциональность может быть перенесена в поддерживаемый командой плагин в будущей версии jQuery.

API jQuery рекомендует использовать 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 более прост!

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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

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

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

Это позволяет:

if (conditionizr.chrome) {...}

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

Ответ 9

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

"chrome" in window

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

Ответ 10

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

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

Как описано в этом ответе: fooobar.com/info/44016/...