Ich benötige eine Funktion, die einen booleschen Wert zurückgibt, um zu überprüfen, ob der Browser Chrome ist .
Wie erstelle ich solche Funktionen?
Ich benötige eine Funktion, die einen booleschen Wert zurückgibt, um zu überprüfen, ob der Browser Chrome ist .
Wie erstelle ich solche Funktionen?
Antworten:
Update: In Jonathans Antwort finden Sie eine aktualisierte Vorgehensweise. Die folgende Antwort funktioniert möglicherweise immer noch, kann jedoch in anderen Browsern zu Fehlalarmen führen.
Wie bereits erwähnt, können User Agents gefälscht werden. Daher ist es immer am besten, bei der Behandlung dieser Probleme die Feature-Erkennung (z. B. Modernizer ) zu verwenden, wie in anderen Antworten erwähnt.
quelle
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
zu zurücknavigator.vendor
, daher ist diese Methode nicht kugelsicher. Etwas wie/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)
würde wahrscheinlich besser funktionierenVersuchen Sie Folgendes , um zu überprüfen, ob der Browser Google Chrome ist:
Anwendungsbeispiel: http://codepen.io/jonathan/pen/WpQELR
Der Grund dafür ist, dass Sie den Google Chrome-Inspektor verwenden und zur Registerkarte "Konsole" wechseln. Geben Sie 'window' ein und drücken Sie die Eingabetaste. Anschließend können Sie die DOM-Eigenschaften für das 'Fensterobjekt' anzeigen. Wenn Sie das Objekt reduzieren, können Sie alle Eigenschaften anzeigen, einschließlich der Eigenschaft 'chrome'.
Sie können nicht mehr streng gleich true verwenden, um im IE nachzuschauen
window.chrome
. Früher kehrte der IE zurückundefined
, jetzt kehrt er zurücktrue
. Aber raten Sie mal, IE11 gibt jetzt wieder undefiniert zurück. IE11 gibt auch eine leere Zeichenfolge""
für zurückwindow.navigator.vendor
.Ich hoffe das hilft!
AKTUALISIEREN:
Vielen Dank an Halcyon991 für den Hinweis, dass die neue Opera 18+ auch für true ausgegeben wird
window.chrome
. Es sieht so aus, als ob Opera 18 auf Chrom 31 basiert . Also habe ich einen Scheck hinzugefügt, um sicherzustellen, dass daswindow.navigator.vendor
ist:"Google Inc"
und nicht ist"Opera Software ASA"
. Auch danke an Ring und Adrien Be für die Hinweise, dass Chrome 33 nicht mehr wahr ist ...window.chrome
prüft jetzt, ob es nicht null ist. Aber achten Sie genau auf IE11. Ich habe die Überprüfung hinzugefügt,undefined
da IE11 jetzt ausgegeben wirdundefined
, wie bei der ersten Veröffentlichung. Nach einigen Update-Builds wird es ausgegebentrue
. Jetzt wird der letzte Update-Buildundefined
wieder ausgegeben . Microsoft kann sich nicht entscheiden!UPDATE 24.07.2015 - Ergänzung für Opera Check
Opera 30 wurde gerade veröffentlicht. Es wird nicht mehr ausgegeben
window.opera
. Undwindow.chrome
gibt in der neuen Opera 30 auch true aus. Sie müssen also überprüfen, ob OPR im userAgent enthalten ist . Ich habe meinen obigen Zustand aktualisiert, um dieser neuen Änderung in Opera 30 Rechnung zu tragen, da dieselbe Render-Engine wie Google Chrome verwendet wird.UPDATE 13.10.2015 - Ergänzung zur IE-Prüfung
Überprüfung für IE Edge hinzugefügt, da es
true
fürwindow.chrome
.. ausgibt , obwohl IE11undefined
für ausgibtwindow.chrome
. Vielen Dank an artfulhacker, der uns darüber informiert hat!UPDATE 05.02.2016 - Ergänzung für iOS Chrome Check
Prüfung für iOS Chrome-Prüfung hinzugefügt,
CriOS
da sietrue
für Chrome unter iOS ausgegeben wird. Vielen Dank an xinthose, dass Sie uns darüber informiert haben!UPDATE 18.04.2008 - Änderung für Opera-Check
Bearbeitet Check für Opera, Kontrolle
window.opr
ist nichtundefined
da jetzt Chrome 66 hatOPR
inwindow.navigator.vendor
. Vielen Dank an Frosty Z und Daniel Wallman für die Meldung!quelle
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
DaherisChrome()
kehrt falsch .window.opr
nichtundefined
.noch kürzer:
var is_chrome = /chrome/i.test( navigator.userAgent );
quelle
true
in Microsoft Edge.Eine viel einfachere Lösung ist nur zu verwenden:
Das
!!
konvertiert das Objekt einfach in einen booleschen Wert. In Nicht-Chrome-Browsern ist diese Eigenschaftundefined
nicht wahr.Beachten Sie, dass dies auch für Versionen von Edge zurückgegeben wird, die auf Chrome basieren (danke @Carrm für den Hinweis).
quelle
true
zuwindow.chrome
. Schauen Sie sich conditionizr.com an, das über eine kugelsichere Erkennung + Korrektur verfügt.!!
konvertiert den Wert entwedertrue
oderfalse
.typeof(window.chrome)
gibt"object"
, währendtypeof(!!window.chrome)
gibt"boolean"
. Ihr Codebeispiel funktioniert auch, da dieif
Anweisung die Konvertierung durchführt.true
für Edge zurück.quelle
quelle
true
in Microsoft Edge zurück.Möglicherweise möchten Sie auch die spezifische Version von Chrome:
Entschuldigung an The Big Lebowski für die Verwendung seiner Antwort in meiner.
quelle
"537.36"
in Microsoft Edge.Sie können verwenden:
Es arbeitet an v.71
quelle
navigator.userAgent.includes("Chrome")
Funktioniert für mich auf Chrome auf Mac. Scheint einfacher oder zuverlässiger zu sein (falls die userAgent-Zeichenfolge getestet wurde) als alle oben genannten.
quelle
const isChrome = window.chrome && !window.opr;
Benutzer kann Benutzeragent ändern. Versuchen Sie zum Testen
webkit
vorangestelltes Eigentum instyle
Objekt vonbody
Elementquelle
Überprüfen Sie Folgendes: Wie erkennt man den Browser Safari, Chrome, IE, Firefox und Opera?
In Ihrem Fall: var isChrome = !! window.chrome && (!! window.chrome.webstore || !! window.chrome.runtime);
quelle
Um die Namen verschiedener Desktop-Browser (Firefox, IE, Opera, Edge, Chrome) zu kennen. Außer Safari.
Funktioniert in folgenden Browserversionen:
Sehen Sie sich hier das Wesentliche und hier die Geige an
Das ursprüngliche Code-Snippet funktionierte nicht mehr für Chrome und ich habe vergessen, wo ich es gefunden habe. Es hatte vorher eine Safari, aber ich habe keinen Zugang mehr zur Safari, daher kann ich mich nicht mehr verifizieren.
Nur die Firefox- und IE-Codes waren Teil des ursprünglichen Snippets.
Die Überprüfung auf Opera, Edge und Chrome ist unkompliziert. Sie haben Unterschiede im userAgent.
OPR
existiert nur in Opera.Edge
existiert nur in Edge. Um nach Chrome zu suchen, sollte diese Zeichenfolge nicht vorhanden sein.Was Firefox und IE betrifft, kann ich nicht erklären, was sie tun.
Ich werde diese Funktionalität einem Paket hinzufügen, das ich schreibe
quelle
Alle Antworten sind falsch. "Opera" und "Chrome" sind in allen Fällen gleich.
(bearbeiteter Teil)
Hier ist die richtige Antwort
quelle
window.chrome.webstore
jetztundefined