it-swarm.com.de

JavaScript: Wie finde ich heraus, ob der Benutzerbrowser Chrome ist?

Ich brauche eine Funktion, die einen booleschen Wert zurückgibt, um zu überprüfen, ob der Browser Chrome ist.

Wie erstelle ich eine solche Funktionalität?

182
Rella

Update: Siehe Jonathans Antwort für eine aktualisierte Möglichkeit, dies zu handhaben. Die Antwort unten funktioniert möglicherweise immer noch, es kann jedoch zu Fehlalarmen in anderen Browsern kommen.

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);

Wie bereits erwähnt, können Benutzerprogramme jedoch gefälscht werden. Daher ist es am besten, die Funktionserkennung (z. B. Modernizer ) zu verwenden, wenn diese Probleme behandelt werden, wie in anderen Antworten erwähnt.

182
Rion Williams

Um zu prüfen, ob der Browser Google Chrome ist, versuchen Sie Folgendes:

// 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 
}

Anwendungsbeispiel: http://codepen.io/jonathan/pen/WpQELR

Dies funktioniert, wenn Sie den Google Chrome-Inspector verwenden und zur Registerkarte "Konsole" wechseln. Geben Sie "Fenster" ein und drücken Sie die Eingabetaste. Dann können Sie die DOM-Eigenschaften für das 'Fensterobjekt' anzeigen. Wenn Sie das Objekt minimieren, können Sie alle Eigenschaften einschließlich der 'Chrome'-Eigenschaft anzeigen. 

Sie können nicht mehr streng gleich true verwenden, um in IE nach window.chrome zu suchen. IE wurde verwendet, um undefined zurückzugeben, jetzt wird true zurückgegeben. Aber raten Sie mal, IE11 kehrt jetzt undefiniert zurück. IE11 gibt auch einen leeren String "" für window.navigator.vendor zurück. 

Ich hoffe das hilft!

UPDATE:

Vielen Dank an Halcyon991 für den Hinweis, dass der neue Opera 18+ auch für window.chrome in true ausgegeben wird. Sieht aus wie Opera 18 auf Chromium 31 basiert. Ich fügte eine Überprüfung hinzu, um sicherzustellen, dass der window.navigator.vendor Folgendes ist: "Google Inc" und nicht "Opera Software ASA". Auch dank Ring und Adrien Be für das Heads-up über Chrome 33, das nicht mehr true zurückgibt ... window.chrome prüft nun, ob nicht null. Aber ich nehme die Aufmerksamkeit auf IE11. Ich habe den Check-Back für undefined hinzugefügt, da der IE11 jetzt undefined ausgibt, wie es beim ersten Release der Fall war. Nach einigen Update-Builds wurde er an true ausgegeben. jetzt gibt der letzte Update-Build erneut undefined aus. Microsoft kann sich nicht entscheiden!

UPDATE 24.07.2015 - Zusatz zur Opera-Prüfung

Opera 30 wurde gerade veröffentlicht. window.opera wird nicht mehr ausgegeben. Und auch window.chrome gibt in der neuen Opera 30 den Wert true aus. Sie müssen also prüfen, ob OPR in userAgent ist. Ich habe meine Bedingung oben aktualisiert, um diese neue Änderung in Opera 30 zu berücksichtigen, da dieselbe Render-Engine wie Google Chrome verwendet wird.

UPDATE 13.10.2015 - Zusatz für die Prüfung von IE

Check für IE Edge hinzugefügt, da er true für window.chrome .. ausgibt, obwohl IE11 undefined für window.chrome ausgibt. Danke an artfulhacker , dass Sie uns davon wissen lassen!

UPDATE 05.02.2016 - Ergänzung für iOS Chrome Check

Check für iOS Chrome hinzugefügt CriOS aufgrund der Ausgabe von true für Chrome unter iOS. Danke an xinthose , dass Sie uns davon wissen lassen!

UPDATE 18.04.2014 - Änderung für Opera Check

Die Prüfung für Opera wurde bearbeitet, und window.opr ist nicht undefined, da Chrome 66 jetzt OPR in window.navigator.vendor hat. Danke an Frosty Z und Daniel Wallman , der dies berichtet hat!

273

noch kürzer: var is_chrome = /chrome/i.test( navigator.userAgent );

21

Eine viel einfachere Lösung ist nur zu verwenden:

var isChrome = !!window.chrome;

Der !! konvertiert das Objekt einfach in einen booleschen Wert. In Nicht-Chrome-Browsern ist diese Eigenschaft undefined, was nicht wahr ist.

13
Drew Noakes

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, '  '));

13
Josef Ježek
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
8
naveen

Möglicherweise möchten Sie auch eine bestimmte Version von Chrome:

var ua = navigator.userAgent;
if(/chrome/i.test(ua)) {
    var uaArray = ua.split(' ')
    ,   version = uaArray[uaArray.length - 2].substr(7);
}

Entschuldigung an The Big Lebowski, dass er seine Antwort in meiner verwendet hat.

2
MrOodles

Sie können verwenden:

navigator.userAgent.indexOf("Chrome") != -1

Es arbeitet an v.71

2
magg89

Der Benutzer kann den Benutzeragenten ändern. Testen Sie die webkit-Eigenschaft im style-Objekt des body-Elements

if ("webkitAppearance" in document.body.style) {
  // do stuff
}
1
guest271314

Überprüfen Sie Folgendes: Wie erkennt man Safari-, Chrome-, IE-, Firefox- und Opera-Browser?

In Ihrem Fall: Var isChrome = !! window.chrome && (!! window.chrome.webstore || !! window.chrome.runtime);

0
cedenoaugusto

Funktioniert für mich unter Chrome auf dem Mac. Scheint als einfacher oder zuverlässiger (im Falle eines getesteten UserAgent-Strings) als alle oben genannten. 

        var isChrome = false;
        if (window.chrome && !window.opr){
            isChrome = true;
        }
        console.log(isChrome);
0
yurin

So kennen Sie die Namen verschiedener Desktop-Browser (Firefox, IE, Opera, Edge, Chrome). Außer Safari.

function getBrowserName() {
  var browserName = '';
  var userAgent = navigator.userAgent;
  (typeof InstallTrigger !== 'undefined') && (browserName = 'Firefox');
  ( /* @[email protected]*/ false || !!document.documentMode) && (browserName = 'IE');
  (!!window.chrome && userAgent.match(/OPR/)) && (browserName = 'Opera');
  (!!window.chrome && userAgent.match(/Edge/)) && (browserName = 'Edge');
  (!!window.chrome && !userAgent.match(/(OPR|Edge)/)) && (browserName = 'Chrome');

  /**
   * Expected returns
   * Firefox, Opera, Edge, Chrome
   */
  return browserName;
}

Funktioniert in folgenden Browserversionen:

Opera - 58.0.3135.79
Firefox - 65.0.2 (64-bit)
IE - 11.413.15063 (JS Fiddle no longer supports IE just paste in Console)
Edge - 44.17763.1.0
Chrome - 72.0.3626.121 (Official Build) (64-bit)

Sehen Sie sich den Kern an hier und die Geige hier

Das ursprüngliche Code-Snippet funktionierte nicht mehr für Chrome und ich habe vergessen, wo ich es gefunden habe. Es gab schon einmal eine Safari, aber ich habe keinen Zugang mehr zu einer Safari, so dass ich mich nicht mehr verifizieren kann.

Nur die Codes Firefox und IE waren Teil des ursprünglichen Snippets.

Die Überprüfung für 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 den Firefox und den IE betrifft, kann ich nicht erklären, was sie tun.

Ich werde diese Funktionalität zu einem Paket hinzufügen, das ich schreibe

0
iamdevlinph