J'ai besoin d'une fonction renvoyant une valeur booléenne pour vérifier si le navigateur est Chrome .
Comment créer une telle fonctionnalité?
J'ai besoin d'une fonction renvoyant une valeur booléenne pour vérifier si le navigateur est Chrome .
Comment créer une telle fonctionnalité?
Réponses:
Mise à jour: veuillez consulter la réponse de Jonathan pour une façon actualisée de gérer cela. La réponse ci-dessous peut toujours fonctionner, mais elle pourrait probablement déclencher des faux positifs dans d'autres navigateurs.
Cependant, comme mentionné, les agents utilisateurs peuvent être usurpés, il est donc toujours préférable d'utiliser la détection des fonctionnalités (par exemple Modernizer ) lors du traitement de ces problèmes, comme d'autres réponses le mentionnent.
la source
var is_chrome = ((navigator.userAgent.toLowerCase().indexOf('chrome') > -1) &&(navigator.vendor.toLowerCase().indexOf("google") > -1));
Google Inc
ànavigator.vendor
, cette méthode n'est pas l' épreuve des balles, quelque chose comme/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent)
marcherait probablement mieuxPour vérifier si le navigateur est Google Chrome , essayez ceci:
Exemple d'utilisation: http://codepen.io/jonathan/pen/WpQELR
La raison pour laquelle cela fonctionne est que si vous utilisez l'inspecteur Google Chrome et accédez à l'onglet console. Tapez «fenêtre» et appuyez sur entrée. Ensuite, vous pourrez afficher les propriétés DOM de «l'objet fenêtre». Lorsque vous réduisez l'objet, vous pouvez afficher toutes les propriétés, y compris la propriété «chrome».
Vous ne pouvez plus utiliser strictement égal à vrai pour vérifier dans IE
window.chrome
. IE retournaitundefined
, maintenant il revienttrue
. Mais devinez quoi, IE11 renvoie à nouveau indéfini. IE11 renvoie également une chaîne vide""
pourwindow.navigator.vendor
.J'espère que ça aide!
METTRE À JOUR:
Merci à Halcyon991 d' avoir souligné ci-dessous que le nouvel Opera 18+ est également vrai
window.chrome
. On dirait qu'Opera 18 est basé sur Chromium 31 . J'ai donc ajouté une vérification pour m'assurer que lewindow.navigator.vendor
est:"Google Inc"
et non"Opera Software ASA"
. Merci aussi à Ring et Adrien Be pour les avertissements sur Chrome 33 ne retournant plus vrai ...window.chrome
vérifie maintenant si non nul. Mais faites très attention à IE11, j'ai ajouté la vérificationundefined
depuis qu'IE11 sort maintenantundefined
, comme il l'a fait lors de sa première sortie .. puis après quelques builds de mise à jour, il est sorti verstrue
... la build de mise à jour récente est deundefined
nouveau en sortie . Microsoft ne peut pas se décider!MISE À JOUR 7/24/2015 - ajout pour la vérification d'Opera
Opera 30 vient de sortir. Il ne sort plus
window.opera
. Etwindow.chrome
affiche également true dans le nouvel Opera 30. Vous devez donc vérifier si OPR est dans userAgent . J'ai mis à jour ma condition ci-dessus pour tenir compte de ce nouveau changement dans Opera 30, car il utilise le même moteur de rendu que Google Chrome.MISE À JOUR 13/10/2015 - ajout pour la vérification IE
Ajout de la vérification pour IE Edge en raison de sa sortie
true
pourwindow.chrome
.. même si IE11 sortundefined
pourwindow.chrome
. Merci à artfulhacker de nous en avoir informé!MISE À JOUR 2/5/2016 - ajout pour la vérification iOS Chrome
Ajout d'une vérification pour iOS Chrome en
CriOS
raison de sa sortietrue
pour Chrome sur iOS. Merci à xinthose de nous en avoir informé!MISE À JOUR 4/18/2018 - changement pour chèque Opera
Sous la direction chèque de l' Opéra, la vérification
window.opr
n'est pasundefined
depuis maintenant Chrome 66 aOPR
enwindow.navigator.vendor
. Merci à Frosty Z et Daniel Wallman pour avoir signalé cela!la source
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
,isChrome()
renvoie donc false .window.opr
pasundefined
.encore plus court:
var is_chrome = /chrome/i.test( navigator.userAgent );
la source
true
dans Microsoft Edge.Une solution beaucoup plus simple consiste simplement à utiliser:
Le
!!
convertit simplement l'objet en une valeur booléenne. Dans les navigateurs non Chrome, cette propriété seraundefined
, ce qui n'est pas vrai.Notez que cela retourne également vrai pour les versions d'Edge basées sur Chrome (merci @Carrm de l'avoir signalé).
la source
true
en faitwindow.chrome
. Découvrez conditionizr.com qui a une détection et une correction pare-balles.!!
convertit la valeur en soittrue
oufalse
.typeof(window.chrome)
donne"object"
, tandis quetypeof(!!window.chrome)
donne"boolean"
. Votre exemple de code fonctionne également, car l'if
instruction effectue la conversion.true
pour Edge.la source
la source
true
dans Microsoft Edge.Vous pouvez également souhaiter la version spécifique de Chrome:
Toutes mes excuses à The Big Lebowski pour avoir utilisé sa réponse dans la mienne.
la source
"537.36"
dans Microsoft Edge.Vous pouvez utiliser:
Il travaille sur v.71
la source
navigator.userAgent.includes("Chrome")
Fonctionne pour moi sur Chrome sur Mac. Semble être plus simple ou plus fiable (dans le cas où la chaîne userAgent a été testée) que tout ce qui précède.
la source
const isChrome = window.chrome && !window.opr;
L'utilisateur peut changer d'agent utilisateur. Essayez de tester la
webkit
propriété préfixée dans l'style
objet de l'body
élémentla source
Vérifiez ceci: Comment détecter les navigateurs Safari, Chrome, IE, Firefox et Opera?
Dans votre cas: var isChrome = !! window.chrome && (!! window.chrome.webstore || !! window.chrome.runtime);
la source
Connaître les noms des différents navigateurs de bureau (Firefox, IE, Opera, Edge, Chrome). Sauf Safari.
Fonctionne dans les versions de navigateur suivantes:
Voir l'essentiel ici et le violon ici
L'extrait de code d'origine ne fonctionnait plus pour Chrome et j'ai oublié où je l'ai trouvé. Il y avait un safari auparavant mais je n'ai plus accès au safari donc je ne peux plus vérifier.
Seuls les codes Firefox et IE faisaient partie de l'extrait d'origine.
La vérification d'Opera, Edge et Chrome est simple. Ils ont des différences dans userAgent.
OPR
n'existe que dans Opera.Edge
n'existe que dans Edge. Donc, pour vérifier Chrome, cette chaîne ne devrait pas être là.Quant à Firefox et IE, je ne peux pas expliquer ce qu'ils font.
Je vais ajouter cette fonctionnalité à un package que j'écris
la source
toutes les réponses sont fausses. "Opera" et "Chrome" sont les mêmes dans tous les cas.
(partie éditée)
voici la bonne réponse
la source
window.chrome.webstore
est maintenantundefined