Мне нужна функция, возвращающая логическое значение, чтобы проверить, является ли браузер Chrome .
Как мне создать такую функциональность?
Мне нужна функция, возвращающая логическое значение, чтобы проверить, является ли браузер Chrome .
Как мне создать такую функциональность?
Ответы:
Обновление: Пожалуйста, смотрите ответ Джонатана для обновленного способа справиться с этим. Ответ ниже может все еще работать, но это могло бы вызвать некоторые ложные срабатывания в других браузерах.
Однако, как уже упоминалось, пользовательские агенты могут быть подделаны, поэтому всегда лучше использовать обнаружение функций (например, Modernizer ) при решении этих проблем, как упоминают другие ответы.
источник
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
кnavigator.vendor
, так что этот метод не пуленепробиваемый, что-то вроде/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)
бы, вероятно, будет работать лучшеЧтобы проверить, является ли браузер Google Chrome , попробуйте это:
Пример использования: http://codepen.io/jonathan/pen/WpQELR
Это работает потому, что если вы используете инспектор Google Chrome и переходите на вкладку консоли. Введите «окно» и нажмите Enter. Затем вы сможете просмотреть свойства DOM для «объекта окна». Когда вы свернете объект, вы сможете просмотреть все свойства, включая свойство 'chrome'.
Вы не можете использовать строго равно true больше, чтобы проверить в IE
window.chrome
. IE раньше возвращалсяundefined
, теперь возвращаетсяtrue
. Но угадайте, что, IE11 теперь снова возвращает undefined. IE11 также возвращает пустую строку""
дляwindow.navigator.vendor
.Надеюсь, это поможет!
ОБНОВИТЬ:
Спасибо Halcyon991 за указание ниже, что новая Opera 18+ также выводит значение true для
window.chrome
. Похоже, что Opera 18 основана на Chromium 31 . Поэтому я добавил проверку, чтобы убедиться, чтоwindow.navigator.vendor
:"Google Inc"
а не есть"Opera Software ASA"
. Также спасибо Ring и Adrien Be за сообщения о том, что Chrome 33 больше не возвращает истину ...window.chrome
теперь проверяет, если не ноль. Но обратите пристальное внимание на IE11, я добавил проверку,undefined
поскольку IE11 теперь выводитundefined
, как это было при первом выпуске ... затем после некоторых сборок обновлений он выводитсяtrue
... теперь сборка недавних обновлений выводитсяundefined
снова. Microsoft не может решить это!ОБНОВЛЕНИЕ 24.07.2015 - дополнение для проверки Opera
Опера 30 была только что выпущена. Это больше не выводит
window.opera
. А такжеwindow.chrome
выводит значение true в новой Opera 30. Поэтому вы должны проверить, есть ли OPR в userAgent . Я обновил свое условие выше, чтобы учесть это новое изменение в Opera 30, поскольку оно использует тот же механизм рендеринга, что и Google Chrome.ОБНОВЛЕНИЕ 13.10.2015 - дополнение для проверки IE
Добавлена проверка IE Edge из-
true
заwindow.chrome
того, что он выводитundefined
для .. даже если IE11 выводит дляwindow.chrome
. Спасибо artfulhacker, что сообщили нам об этом!ОБНОВЛЕНИЕ 5/5/2016 - дополнение для проверки iOS Chrome
Добавлена проверка для iOS Chrome, так
CriOS
как он выводитtrue
Chrome на iOS. Спасибо xinthose за сообщение об этом!ОБНОВЛЕНИЕ 18/18/2018 - изменение для проверки Opera
Отредактированный чек на Opera, проверка
window.opr
неundefined
так как теперь Chrome 66 имеетOPR
вwindow.navigator.vendor
. Спасибо Frosty Z и Daniel Wallman за сообщение об этом!источник
Mozilla/5.0 (Linux; Android 8.0.0; ASUS_Z012D Build/OPR1.170623.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Mobile Safari/537.36
, поэтомуisChrome()
возвращает false .window.opr
нетundefined
.еще короче
var is_chrome = /chrome/i.test( navigator.userAgent );
источник
true
в Microsoft Edge.Гораздо проще решение просто использовать:
!!
Просто преобразует объект в логическое значение. В не Chrome браузерах это свойство будетundefined
, что не соответствует действительности.Обратите внимание, что это также возвращает true для версий Edge, основанных на Chrome (спасибо @Carrm за указание на это).
источник
true
кwindow.chrome
. Проверьте conditionizr.com, который имеет пуленепробиваемое обнаружение + исправление.!!
преобразует значение быть либоtrue
илиfalse
.typeof(window.chrome)
дает"object"
, тогда какtypeof(!!window.chrome)
дает"boolean"
. Ваш пример кода также работает, потому чтоif
оператор выполняет преобразование.true
Edge.источник
источник
true
в Microsoft Edge.Вы также можете захотеть конкретную версию Chrome:
Извиняюсь перед Большим Лебовски за использование его ответа в моем.
источник
"537.36"
в Microsoft Edge.Ты можешь использовать:
Работает на v.71
источник
navigator.userAgent.includes("Chrome")
У меня работает на Chrome на Mac. Кажется, будет или проще, или более надежным (в случае проверки строки userAgent), чем все выше.
источник
const isChrome = window.chrome && !window.opr;
Пользователь может изменить пользовательский агент. Попробуйте протестировать
webkit
свойство с префиксом вstyle
объектеbody
элементаисточник
Проверьте это: Как обнаружить браузер Safari, Chrome, IE, Firefox и Opera?
В вашем случае: var isChrome = !! window.chrome && (!! window.chrome.webstore || !! window.chrome.runtime);
источник
Чтобы узнать названия различных настольных браузеров (Firefox, IE, Opera, Edge, Chrome). Кроме сафари.
Работает в следующих версиях браузера:
Посмотреть суть здесь и скрипка здесь
Оригинальный фрагмент кода больше не работал для Chrome, и я забыл, где я его нашел. Раньше у него было сафари, но у меня больше нет доступа к сафари, поэтому я больше не могу проверить.
Только Firefox и IE коды были частью оригинального фрагмента.
Проверка Opera, Edge и Chrome выполняется напрямую. У них есть различия в userAgent.
OPR
существует только в опере.Edge
существует только в Edge. Таким образом, чтобы проверить наличие Chrome, этих строк не должно быть.Что касается Firefox и IE, я не могу объяснить, что они делают.
Я буду добавлять эту функциональность в пакет, который я пишу
источник
все ответы неверны. «Опера» и «Хром» одинаковы во всех случаях.
(отредактированная часть)
вот правильный ответ
источник
window.chrome.webstore
Сейчасundefined