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

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

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

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

if ($.browser.webkit) { 

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

 if ($.browser.chrome) { 

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

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

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

jQuery удалил $.browser с 1.9 и свою последнюю версию.

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

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

Пользователь Бесконечный прав,

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

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

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

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

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

Этот вопрос уже обсуждался здесь: 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 и перейдите на вкладку консоли. Введите «окно» и нажмите «Ввод». Затем вы сможете просмотреть свойства DOM для «оконного объекта». Когда вы разрушаете объект, вы можете просмотреть все свойства, в том числе свойство «chrome».

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

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

 $.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.

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

 "chrome" in window 

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

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

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

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

  • Какие запросы вызывают обновления браузеров «F5» и «Ctrl + F5»?
  • Не удалось загрузить ресурс в Chrome
  • Что делать с хром отправки дополнительных запросов?
  • Force IE8 В режим совместимости IE7
  • Safari не устанавливает Cookie, но IE / FF делает
  • Как выполнить базовую проверку подлинности для FirefoxDriver, ChromeDriver и IEdriver в Selenium WebDriver?
  • IE7 и свойство table-cell CSS
  • Поддержка браузера для CSS-сетки
  • Поддержка браузера для URL-адресов, начинающихся с двойной косой черты
  • Доступны ли методы PUT, DELETE, HEAD и т. Д. В большинстве веб-браузеров?
  • Как определить совместимость HTML 5 в браузере
  • Давайте будем гением компьютера.