JavaScript: jak sprawdzić, czy przeglądarką użytkownika jest Chrome?
Potrzebuję funkcji zwracającej wartość logiczną, aby sprawdzić, czy przeglądarka to Chrome.
Jak stworzyć taką funkcjonalność?
9 answers
Aktualizacja: Zobacz odpowiedź Jonathana Aby uzyskać zaktualizowany sposób radzenia sobie z tym. Odpowiedź poniżej może nadal działać, ale prawdopodobnie może wywołać fałszywe alarmy w innych przeglądarkach.
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
Jednak, jak wspomniano agenci użytkownika mogą być sfałszowani, więc zawsze najlepiej jest Użyć wykrywania funkcji (np. Modernizer) podczas obsługi tych problemów, jak wspominają inne odpowiedzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:44
Aby sprawdzić, czy przeglądarka to Google Chrome, spróbuj tego:
// 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
}
Przykład użycia: http://codepen.io/jonathan/pen/WpQELR
To działa, ponieważ jeśli używasz Inspektora Google Chrome i przejdź do zakładki konsola. Wpisz "okno" i naciśnij enter. Następnie możesz wyświetlić właściwości DOM dla 'obiektu window'. Po zwinięciu obiektu można wyświetlić wszystkie właściwości, w tym właściwość "chrome".
Nie możesz używać ściśle równa się true aby sprawdzić w IE dla window.chrome
. IE kiedyś zwracało undefined
, TERAZ Zwraca true
. ale zgadnij co, IE11 znowu zwraca undefined. IE11 zwraca również pusty łańcuch ""
dla window.navigator.vendor
.
Mam nadzieję, że to pomoże!
UPDATE:
Dziękuję Halcyon991 za zwrócenie uwagi poniżej, że nowa Opera 18+ również wychodzi na true dla window.chrome
. Wygląda na to, że Opera 18 jest oparta na Chromium 31 . Więc dodałem czek, aby oczywiście window.navigator.vendor
jest: "Google Inc"
i nie jest "Opera Software ASA"
. Również podziękowania dla Ring i Adrien Be dla heads up o Chrome 33 już nie zwraca true... window.chrome
teraz sprawdza, czy nie null. Ale Odtwórz uważnie IE11, dodałem check back dla undefined
ponieważ IE11 teraz wyjścia undefined
, Jak to było, gdy po raz pierwszy wydany.. następnie po jakimś update builds został wysłany do true
.. teraz ostatni update build wyświetla undefined
ponownie. Microsoft nie może się zdecydować!
Aktualizacja 24.07.2015-dodanie do sprawdzenia Opera
Opera 30 została właśnie wydana. Nie ma już wyjściawindow.opera
. A także window.chrome
wyjścia do true w Nowej Operze 30. Musisz więc sprawdzić, czy OPR znajduje się w userAgent . Zaktualizowałem Mój stan powyżej, aby uwzględnić tę nową zmianę w Operze 30, ponieważ używa tego samego silnika renderowania co Google Chrome.
Aktualizacja 10/13/2015-dodanie do sprawdzania IE
Dodano sprawdzanie krawędzi IE ze względu na wyjście true
dla window.chrome
.. mimo że IE11 wyjścia undefined
dla window.chrome
. Podziękowania dla artfulhacker za poinformowanie nas o tym!
Aktualizacja 2/5/2016-dodatek do iOS Chrome check
Dodano check for iOS Chrome check CriOS
ze względu na to, że wyświetla true
dla Chrome na iOS. Podziękowania dla xinthose za poinformowanie nas o tym!
Aktualizacja 4/18/2018-zmiana dla sprawdzenia Opery
Edited check for Opera, checking window.opr
is not undefined
since now Chrome 66 ma OPR
W window.navigator.vendor
. Podziękowania dla Frosty Z i Daniela Wallmana za reportaż!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-23 11:43:06
Jeszcze krótszy: var is_chrome = /chrome/i.test( navigator.userAgent );
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-09 13:57:06
console.log(JSON.stringify({
isAndroid: /Android/.test(navigator.userAgent),
isCordova: !!window.cordova,
isEdge: /Edge/.test(navigator.userAgent),
isFirefox: /Firefox/.test(navigator.userAgent),
isChrome: /Google Inc/.test(navigator.vendor),
isChromeIOS: /CriOS/.test(navigator.userAgent),
isChromiumBased: !!window.chrome && !/Edge/.test(navigator.userAgent),
isIE: /Trident/.test(navigator.userAgent),
isIOS: /(iPhone|iPad|iPod)/.test(navigator.platform),
isOpera: /OPR/.test(navigator.userAgent),
isSafari: /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent),
isTouchScreen: ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch,
isWebComponentsSupported: 'registerElement' in document && 'import' in document.createElement('link') && 'content' in document.createElement('template')
}, null, ' '));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-06 12:24:41
Dużo prostszym rozwiązaniem jest po prostu użycie:
var isChrome = !!window.chrome;
!!
po prostu zamienia obiekt na wartość logiczną. W przeglądarkach innych niż Chrome właściwość ta będzie undefined
, co nie jest prawdą.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-05 10:47:41
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-02 17:30:32
Możesz również chcieć konkretnej wersji Chrome:
var ua = navigator.userAgent;
if(/chrome/i.test(ua)) {
var uaArray = ua.split(' ')
, version = uaArray[uaArray.length - 2].substr(7);
}
Przepraszam Big Lebowskiego za użycie jego odpowiedzi w mojej.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-07 19:00:58
Użytkownik może zmienić agenta użytkownika . Spróbuj przetestować właściwość webkit
prefiksowaną w style
obiekcie body
elementu
if ("webkitAppearance" in document.body.style) {
// do stuff
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-27 15:06:22
Wszystkie odpowiedzi są błędne. "Opera" i "Chrome" są takie same we wszystkich przypadkach.
(część edytowana)
Oto właściwa odpowiedź
if (window.chrome && window.chrome.webstore) {
// this is Chrome
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-03 13:03:45