J'ai 5 extensions / extensions pour FF, Chrome, IE, Opera et Safari.
Comment puis-je reconnaître le navigateur de l'utilisateur et rediriger (une fois qu'un bouton d'installation a été cliqué) pour télécharger l'addon correspondant?
javascript
browser-detection
FrankC
la source
la source
Réponses:
La recherche sur Google d'une détection fiable du navigateur entraîne souvent la vérification de la chaîne de l'agent utilisateur. Cette méthode n'est pas fiable, car il est trivial d'usurper cette valeur.
J'ai écrit une méthode pour détecter les navigateurs en tapant du canard .
N'utilisez la méthode de détection du navigateur que si elle est vraiment nécessaire, par exemple en affichant des instructions spécifiques au navigateur pour installer une extension. Utilisez la détection des fonctionnalités lorsque cela est possible.
Démo: https://jsfiddle.net/6spj1059/
Analyse de fiabilité
La méthode précédente dépendait des propriétés du moteur de rendu (
-moz-box-sizing
et-webkit-transform
) pour détecter le navigateur. Ces préfixes seront finalement supprimés, afin de rendre la détection encore plus robuste, je suis passé à des caractéristiques spécifiques au navigateur:document.documentMode
.StyleMedia
constructeur. L'exclusion de Trident nous laisse avec Edge.InstallTrigger
chrome
objet global , contenant plusieurs propriétés, dont unchrome.webstore
objet documenté .chrome.webstore
est obsolète et non définie dans les versions récentesSafariRemoteNotification
, qui a été introduit après la version 7.1, pour couvrir tous les Safaris à partir de la version 3.0.window.opera
existe depuis des années, mais sera abandonné lorsque Opera remplacera son moteur par Blink + V8 (utilisé par Chromium).chrome
objet est défini (maischrome.webstore
ne l'est pas). Étant donné qu'Opera s'efforce de cloner Chrome, j'utilise un agent utilisateur reniflant à cet effet.!!window.opr && opr.addons
peut être utilisée pour détecter Opera 20+ (evergreen).CSS.supports()
été introduit dans Blink une fois que Google a allumé Chrome 28. C'est bien sûr le même Blink utilisé dans Opera.Testé avec succès dans:
la source
window.chrome.webstore
n'est pas défini ici. Je ne l'ai pas vérifié avec Firefox Extensions.is.js
mentionné ailleurs fonctionne dans les extensions Chrome et Firefox.isSafari
ne fonctionne pas avec Safari 10. Je vais dire que c'est une mauvaise solution (pas que j'en ai une bonne). Il n'y a aucune garantie que la plupart des éléments que vous recherchez ne seront pas supprimés OU ne seront pas ajoutés par d'autres navigateurs. Tous les sites qui utilisaient ce code pour vérifier Safari venaient de rompre avec les mises à niveau de macOS Sierra ou Safari 10 :(isSafari
ne fonctionne pas<iframe>
sous Safari 10.1.2Vous pouvez essayer la méthode suivante pour vérifier la version du navigateur.
Et si vous avez besoin de connaître uniquement la version du navigateur IE, vous pouvez suivre le code ci-dessous. Ce code fonctionne bien pour la version IE6 à IE11
la source
chrome
mot - clé dans l'agent utilisateur. exemple d'mozilla/5.0 (macintosh; intel mac os x 10_11_5) applewebkit/601.6.17 (khtml, like gecko) version/9.1.1 safari/601.6.17
if(navigator.userAgent.indexOf("Opera") != -1 || navigator.userAgent.indexOf('OPR') != -1 )
Je sais qu'il peut être exagéré d'utiliser une bibliothèque pour cela, mais juste pour enrichir le fil, vous pouvez vérifier la façon de faire is.js :
la source
is.js
et vérifier comment ils le font.Voici plusieurs bibliothèques importantes qui gèrent la détection des navigateurs à partir de décembre 2019.
Bowser par lancedikson - 4,065 ★ s - Dernière mise à jour le 2 oct.2019 - 4,8 Ko
* prend en charge Edge basé sur le chrome
Platform.js par bestiejs - 2 550 ★ s - Dernière mise à jour le 14 avr.2019 - 5,9 Ko
Navigateur jQuery par gabceb - 504 ★ s - Dernière mise à jour le 23 novembre 2015 - 1,3 Ko
Detect.js (Archivé) par darcyclarke - 522 ★ s - Dernière mise à jour le 26 octobre 2015 - 2,9 Ko
Browser Detect (Archivé) par QuirksMode - Dernière mise à jour le 14 novembre 2013 - 884B
Mentions notables:
Lectures complémentaires
la source
Au cas où quelqu'un trouverait cela utile, j'ai fait de la réponse de Rob W une fonction qui renvoie la chaîne du navigateur plutôt que d'avoir plusieurs variables flottantes. Étant donné que le navigateur ne peut pas non plus vraiment changer sans se charger à nouveau, je l'ai fait en cache le résultat pour l'empêcher d'avoir à le travailler la prochaine fois que la fonction est appelée.
la source
window.chrome.webstore
été supprimée dans Chrome 71, donc cette approche ne fonctionne plus.Variante courte
la source
Voici une version ajustée de 2016 de la réponse de Rob, y compris Microsoft Edge et la détection de Blink:
( modifier : j'ai mis à jour la réponse de Rob ci-dessus avec ces informations.)
La beauté de cette approche est qu'elle repose sur les propriétés du moteur de navigation, elle couvre donc même les navigateurs dérivés, tels que Yandex ou Vivaldi, qui sont pratiquement compatibles avec les principaux navigateurs dont ils utilisent les moteurs. L'exception est Opera, qui repose sur le reniflement des agents utilisateurs, mais aujourd'hui (c'est-à-dire la version 15 et supérieure), même Opera n'est lui-même qu'un shell pour Blink.
la source
!!window.MSAssertion;
test ne fonctionne pas pour moi dans la version bêta d'Edge via Remote Desktop. Il retourne faux.MSAssertion
astuce est ajustée à la version 25. Mais puisque de nombreux développeurs s'appuient sur les VM, je vais essayer de l'ajuster sur cette ancienne version. Bon appel. Merci.StyleMedia
(en majuscule) est spécifique à IE et Edge et ne semble aller nulle part.Vous pouvez utiliser
try
etcatch
utiliser les différents messages d'erreur du navigateur. IE et edge étaient mélangés, mais j'ai utilisé le typage canard de Rob W (basé sur ce projet ici: https://www.khanacademy.org/computer-programming/i-have-opera/2395080328 ).la source
Merci tout le monde. J'ai testé les extraits de code ici sur les navigateurs récents: Chrome 55, Firefox 50, IE 11 et Edge 38 et j'ai trouvé la combinaison suivante qui a fonctionné pour moi pour chacun d'eux. Je suis sûr qu'il peut être amélioré, mais c'est une solution rapide pour quiconque a besoin de:
Il ajoute une classe CSS au HTML, avec le nom du navigateur.
source
Aucune idée s'il est utile à n'importe qui mais voici une variante pour faire plaisir à TypeScript.
}
navigator.userAgent
vous indique tous les navigateurs possibles. Donc, ce n'est vraiment pas fiable, le seul cas où cela fonctionnerait est si l'utilisateur n'a qu'un seul navigateur.Détection des navigateurs sur ordinateur et mobile: Edge, Opera, Chrome, Safari, Firefox, IE
Merci @nimesh utilisateur: 2063564
la source
Il existe également une méthode moins "hacky" qui fonctionne pour tous les navigateurs populaires. Google a inclus une vérification de navigateur dans sa bibliothèque de fermeture . En particulier, jetez un œil à
goog.userAgent
etgoog.userAgent.product
. De cette façon, vous êtes également à jour si quelque chose change dans la façon dont les navigateurs se présentent (étant donné que vous exécutez toujours la dernière version du compilateur de fermeture.)la source
Si vous avez besoin de savoir quelle est la version numérique d'un navigateur particulier, vous pouvez utiliser l'extrait de code suivant. Actuellement, il vous indiquera la version de Chrome / Chromium / Firefox:
la source
UAParser est l'une des bibliothèques JavaScript légères permettant d'identifier le navigateur, le moteur, le système d'exploitation, le processeur et le type / modèle de périphérique à partir de la chaîne userAgent.
Un CDN est disponible. Ici, j'ai inclus un exemple de code pour détecter un navigateur utilisant UAParser.
Vous pouvez maintenant utiliser la valeur de
result.browser
pour programmer conditionnellement votre page.Tutoriel source: Comment détecter un navigateur, un moteur, un système d'exploitation, un processeur et un appareil à l'aide de JavaScript?
la source
la source
Cela combine à la fois la réponse originale de Rob et la mise à jour de Pilau pour 2016
la source
Ici, vous découvrez le navigateur qu'il exécute.
la source
Nous pouvons utiliser les méthodes ci-dessous
la source
la source
Une simple ligne de code JavaScript vous donnera le nom du navigateur:
la source
navigator.userAgent
vous indique tous les navigateurs possibles. Donc, ce n'est vraiment pas fiable, le seul cas où cela fonctionnerait est si l'utilisateur n'a qu'un seul navigateur.