Potrzebuję funkcji zwracającej wartość logiczną, aby sprawdzić, czy przeglądarka jest Chrome .
Jak utworzyć taką funkcjonalność?
Potrzebuję funkcji zwracającej wartość logiczną, aby sprawdzić, czy przeglądarka jest Chrome .
Jak utworzyć taką funkcjonalność?
Odpowiedzi:
Aktualizacja: zapoznaj się z odpowiedzią Jonathana, aby uzyskać zaktualizowany sposób rozwiązania tego problemu. Poniższa odpowiedź może nadal działać, ale może powodować pewne fałszywe alarmy w innych przeglądarkach.
Jednak, jak wspomniano, programy użytkownika mogą być sfałszowane, dlatego zawsze najlepiej jest korzystać z funkcji wykrywania (np. Modernizatora ) podczas rozwiązywania tych problemów, jak wspominają inne odpowiedzi.
źródło
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
sięnavigator.vendor
, więc ta metoda nie jest kuloodporny, coś/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)
będzie prawdopodobnie działać lepiejAby sprawdzić, czy przeglądarką jest Google Chrome , spróbuj tego:
Przykład zastosowania: http://codepen.io/jonathan/pen/WpQELR
Powodem tego jest to, że jeśli używasz inspektora Google Chrome i przejdź do karty konsoli. Wpisz „window” i naciśnij enter. Następnie będziesz mógł zobaczyć właściwości DOM dla „obiektu okna”. Po zwinięciu obiektu można wyświetlić wszystkie właściwości, w tym właściwość „chrome”.
Nie można już używać ściśle równych prawdy do sprawdzania IE
window.chrome
. IE kiedyś zwracałoundefined
, teraz zwracatrue
. Ale zgadnij co, IE11 powraca teraz niezdefiniowane. IE11 zwraca również pusty ciąg znaków""
dlawindow.navigator.vendor
.Mam nadzieję, że to pomoże!
AKTUALIZACJA:
Dziękujemy Halcyon991 za zwrócenie uwagi na to, że nowa Opera 18+ również spełnia swoje oczekiwania
window.chrome
. Wygląda na to, że Opera 18 oparta jest na Chromium 31 . Dodałem więc sprawdzenie, aby upewnić się, żewindow.navigator.vendor
jest:"Google Inc"
a nie jest"Opera Software ASA"
. Również dzięki Ring i Adrien Be za to, że informacje o Chrome 33 już nie wracają ...window.chrome
teraz sprawdza, czy nie ma wartości zero. Ale zwróć szczególną uwagę na IE11, dodałem sprawdzanie,undefined
ponieważ IE11 teraz wyświetla dane wyjścioweundefined
, tak jak to miało miejsce przy pierwszym wydaniu .. a następnie po kilku kompilacjach aktualizacji wypisało to natrue
... teraz ostatnia kompilacja aktualizacji wypisujeundefined
ponownie. Microsoft nie może się zdecydować!AKTUALIZACJA 24.07.2015 - dodatek do czeku Opera
Opera 30 właśnie została wydana. To już nie działa
window.opera
. A takżewindow.chrome
wypisuje wartość true w nowej Operze 30. Musisz więc sprawdzić, czy OPR znajduje się w userAgent . Zaktualizowałem powyższy stan, aby uwzględnić tę nową zmianę w Operze 30, ponieważ używa ona tego samego silnika renderowania co Google Chrome.AKTUALIZACJA 10/13/2015 - dodanie do sprawdzenia IE
Dodano sprawdzanie dla IE Edge, ponieważ wyświetla dane wyjściowe
true
dlawindow.chrome
.. mimo że IE11 wyświetla dane wyjścioweundefined
dlawindow.chrome
. Dzięki artfulhacker za poinformowanie nas o tym!AKTUALIZACJA 2/5/2016 - dodatek do czeku na iOS Chrome
Dodano czek dla iOS Chrome czek z
CriOS
powodu wyświetlaniatrue
w Chrome na iOS. Dzięki xinthose za poinformowanie nas o tym!AKTUALIZACJA 18.04.2018 - zmiana na sprawdzenie Opery
Edytowany czek na Operze, sprawdzanie
window.opr
nie jestundefined
od teraz Chrome 66 maOPR
wwindow.navigator.vendor
. Dziękujemy Frosty Z i Danielowi Wallmanowi za zgłoszenie tego!źródło
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
, dlategoisChrome()
zwraca false .window.opr
nie jestundefined
.jeszcze krótszy:
var is_chrome = /chrome/i.test( navigator.userAgent );
źródło
true
w Microsoft Edge.Znacznie prostszym rozwiązaniem jest po prostu użycie:
Po
!!
prostu przekształca obiekt w wartość logiczną. W przeglądarkach innych niż Chrome ta właściwość będzieundefined
, co nie jest prawdą.Uwaga: zwraca to również prawdę w przypadku wersji Edge opartych na Chrome (dziękuję @Carrm za zwrócenie na to uwagi).
źródło
true
dowindow.chrome
. Sprawdź conditionizr.com, który ma kuloodporną detekcję + naprawę.!!
konwertuje wartość na jednątrue
lubfalse
.typeof(window.chrome)
daje"object"
, atypeof(!!window.chrome)
daje"boolean"
. Przykładowy kod również działa, ponieważif
instrukcja dokonuje konwersji.true
dla Edge.źródło
źródło
true
w Microsoft Edge.Możesz także chcieć konkretnej wersji Chrome:
Przepraszam Wielkiego Lebowskiego za wykorzystanie jego odpowiedzi w mojej.
źródło
"537.36"
w Microsoft Edge.Możesz użyć:
Działa na v.71
źródło
navigator.userAgent.includes("Chrome")
Działa dla mnie w Chrome na Macu. Wydaje się być prostszy lub bardziej niezawodny (w przypadku testowania ciągu UserAgent) niż wszystkie powyższe.
źródło
const isChrome = window.chrome && !window.opr;
Użytkownik może zmienić agenta użytkownika. Spróbuj przetestować
webkit
prefiksowaną właściwość wstyle
obiekciebody
elementuźródło
Sprawdź to: jak wykryć przeglądarkę Safari, Chrome, IE, Firefox i Opera?
W twoim przypadku: var isChrome = !! window.chrome && (!! window.chrome.webstore || !! window.chrome.runtime);
źródło
Aby poznać nazwy różnych przeglądarek stacjonarnych (Firefox, IE, Opera, Edge, Chrome). Z wyjątkiem Safari.
Działa w następujących wersjach przeglądarki:
Zobacz sedno tutaj i skrzypce tutaj
Oryginalny fragment kodu już nie działał w Chrome i zapomniałem, gdzie go znalazłem. Wcześniej odbyło się safari, ale nie mam już dostępu do safari, więc nie mogę już więcej weryfikować.
Tylko kody Firefox i IE były częścią oryginalnego fragmentu kodu.
Sprawdzanie Opera, Edge i Chrome jest proste. Różnią się one w userAgent.
OPR
istnieje tylko w Operze.Edge
istnieje tylko w Edge. Aby sprawdzić Chrome, nie powinno ich być.Jeśli chodzi o Firefox i IE, nie mogę wyjaśnić, co robią.
Dodam tę funkcjonalność do paczki, którą piszę
źródło
wszystkie odpowiedzi są błędne. „Opera” i „Chrome” są takie same we wszystkich przypadkach.
(część edytowana)
oto właściwa odpowiedź
źródło
window.chrome.webstore
jest terazundefined