web-dev-qa-db-fra.com

Détection de Microsoft Edge ou spartiate avec javascript

L'agent utilisateur des navigateurs Edge ou Spartan est-il déjà connu? Quelqu'un peut-il me dire comment détecter ce navigateur et le différencier de IE avant sa sortie?

19
Vandervals

Une simple recherche sur Google m'a trouvé la réponse que vous recherchez: http://forum.piwik.org/read.php?3,125732

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0

Par conséquent, vous devez faire correspondre: "Edge\/\d+"

18
Supamiu

Selon cette réponse :

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;
// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;
5
adamdport

Chaîne Microsoft Edge UA:

Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136

Je détaille pourquoi dans cet article de blog.

Neowin a récemment rapporté que le nouveau navigateur de Microsoft pour Windows 10, Spartan, utilise la chaîne Chrome UA, “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0 ″. Cela est fait exprès.

Vous remarquerez également que la chaîne entière se termine par "Edge/12.0 ″, ce qui n'est pas le cas pour Chrome.

Je dois souligner que ce n'est pas une dérogation par rapport à ce que Microsoft a fait avec IE 11, qui sur Windows 8 se lit: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv: 11.0) comme Gecko, comme expliqué dans cet article.

Qu'est-ce que le reniflement d'agent utilisateur?

Souvent, les développeurs Web renifleront UA pour la détection du navigateur. Mozilla l'explique bien sur leur blog:

Servir différentes pages Web ou services à différents navigateurs est généralement une mauvaise idée. Le Web est destiné à être accessible à tous, quel que soit le navigateur ou l'appareil qu'ils utilisent. Il existe des moyens de développer votre site Web pour s'améliorer progressivement en fonction de la disponibilité des fonctionnalités plutôt qu'en ciblant des navigateurs spécifiques.

Voici un excellent article expliquant l'historique de l'agent utilisateur.

Souvent, les développeurs paresseux reniflent simplement la chaîne UA et désactivent le contenu de leur site Web en fonction du navigateur qu'ils pensent que le spectateur utilise. Internet Explorer 8 est un point de frustration courant pour les développeurs, ils vérifieront donc fréquemment si un utilisateur utilise N'IMPORTE QUELLE version d'IE et désactiveront les fonctionnalités.

L'équipe Edge le détaille encore plus sur son blog.

Toutes les chaînes d'agents utilisateurs contiennent plus d'informations sur les autres navigateurs que le navigateur réel que vous utilisez - pas seulement des jetons, mais également des numéros de version "significatifs".

Chaîne UA d'Internet Explorer 11:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv: 11.0) comme Gecko

Chaîne Microsoft Edge UA:

Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136

La propriété userAgent a été décrite à juste titre comme "un paquet de mensonges toujours croissant" par Patrick H. Lauke dans les discussions du W3C. ("Ou plutôt, un acte d'équilibrage consistant à ajouter suffisamment de mots clés hérités qui ne perdront pas immédiatement l'ancien code de reniflement UA, tout en essayant de transmettre un peu d'informations réellement utiles et précises.")

Nous recommandons aux développeurs Web d'éviter autant que possible de renifler UA; les fonctionnalités modernes de la plate-forme Web sont presque toutes détectables de manière simple. Au cours de la dernière année, nous avons vu certains sites reniflant UA qui ont été mis à jour pour détecter Microsoft Edge ... uniquement pour lui fournir un chemin de code IE11 hérité. Ce n'est pas la meilleure approche, car Microsoft Edge fait correspondre les comportements "WebKit", et non les comportements IE11 (toutes les différences Edge-WebKit sont des bogues que nous souhaitons corriger).

D'après notre expérience, Microsoft Edge fonctionne mieux sur les chemins de code "WebKit" de ces sites. De plus, avec la disponibilité d'Internet sur une plus grande variété d'appareils, veuillez supposer que les navigateurs inconnus sont bons - veuillez ne pas limiter votre site à fonctionner uniquement sur un petit ensemble de navigateurs connus. Si vous faites cela, votre site se cassera certainement à l'avenir.

Conclusion

En présentant la chaîne Chrome UA, nous pouvons contourner les hacks que ces développeurs utilisent pour présenter la meilleure expérience aux utilisateurs.

4
Dave Voyles - MSFT

Recherchez "Edge" dans la chaîne UA.

Alors que dans le monde du marketing, le monde est parfait, en réalité, les navigateurs ont des bogues qui ne sont pas corrigés pendant des années et ce sera toujours le cas.

Dans mon cas, le problème qui m'a obligé à tester Edge contre Chrome est le Chrome bug de hauteur de la liste déroulante que Spartan/Edge rend correctement. Microsoft n'a rien à résoudre) ici et Google ignore ce bogue depuis plus d'un an maintenant (il s'affichait correctement dans les anciennes versions de Chrome).

1
Pax Terminus

Une autre option basée sur la détection des fonctionnalités.

function isBrowserEdge () {
    return typeof CSS !== 'undefined' && CSS.supports("(-ms-ime-align:auto)");
}
0
Eli Crow