Чтобы проверить, является ли браузер Google 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
}
Пример использования: http://codepen.io/jonathan/pen/WpQELR
Причина, по которой это работает, заключается в том, что если вы используете инспектор Google Chrome и переходите на вкладку консоли. Введите «окно» и нажмите Enter. Затем вы сможете просмотреть свойства DOM для «объекта окна». Когда вы свернете объект, вы сможете просмотреть все свойства, включая свойство 'chrome'.
Вы больше не можете использовать строго равные true, чтобы проверить в IE значение window.chrome
. IE раньше возвращал undefined
, теперь возвращает true
. Но угадайте, что, теперь IE11 снова возвращает неопределенное значение. IE11 также возвращает пустую строку ""
для window.navigator.vendor
.
Надеюсь, это поможет!
UPDATE:
Спасибо Halcyon991 за указание ниже, что новая Opera 18+ также выводит значение true для window.chrome
. Похоже, Opera 18 основана на Хром 31 . Поэтому я добавил проверку, чтобы убедиться, что window.navigator.vendor
: "Google Inc"
, а не "Opera Software ASA"
. Также благодаря Ring и Adrien Be за сообщения о том, что Chrome 33 больше не возвращает истину ... window.chrome
теперь проверяет, не равно ли NULL. Но обратите пристальное внимание на 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
.. даже если IE11 выводит undefined
для window.chrome
. Спасибо artfulhacker за сообщение об этом!
ОБНОВЛЕНИЕ 2/5/2016 - дополнение для iOS Chrome check
Добавлена проверка для iOS Проверка Chrome CriOS
из-за того, что она выводит true
для Chrome на iOS. Спасибо xinthose за сообщение об этом!
ОБНОВЛЕНИЕ 18.04.2017 - изменение для проверки Opera
Отредактированная проверка для Opera, проверка window.opr
не undefined
, так как теперь Chrome 66 имеет OPR
в window.navigator.vendor
. Спасибо Frosty Z и Daniel Wallman за сообщение об этом!