Comment cibler le navigateur Windows 10 Edge avec javascript

je sais que vous devriez faire la détection de fonctionnalités lorsque c'est possible, mais pouvez-vous détecter en Javascript si le navigateur est le navigateur Microsoft Edge?

je maintiens un vieux produit et je veux afficher un avertissement que certaines fonctionnalités pourraient être brisées sans avoir à investir beaucoup de temps pour réparer l'ancien code.

22
demandé sur Willem de Wit 2015-07-30 13:26:05

8 réponses

essayez de détecter les fonctionnalités au lieu d'un navigateur spécifique. C'est plus sécurisant pour l'avenir. Il est rare que vous utilisiez la détection par navigateur.

Avec cela de la sorte: une option est d'utiliser une bibliothèque (il y a beaucoup de subtilités à l'Agent Utilisateur de chaînes de caractères), ou, subsidiairement, à analyser window.navigator.userAgent manuellement.

à l'Aide d'un analyseur de bibliothèque

# https://github.com/faisalman/ua-parser-js.

var parser = new UAParser();
var result = parser.getResult();

var name = result.browser.name;
var version = result.browser.version;

Première approche avec Javascript

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

window.navigator.userAgent.indexOf("Edge") > -1
26
répondu sandstrom 2018-08-18 20:47:15

voici le script simple pour détecter le navigateur de bord

if (/Edge/.test(navigator.userAgent)) {
    alert('Hello Microsoft User!');
}

explication:

/Edge/

une expression régulière pour rechercher la chaîne 'Edge' - que nous testons ensuite contre le 'navigator.userAgent 'propriété

6
répondu Manoj Kadolkar 2017-10-25 05:01:09

la chaîne useragent contient Edge/12.9600, où le 12.9600 est le numéro de version que j'ai testé. Ceci est complètement différent de la chaîne d'agent utilisateur D'Internet Explorer en mode 'Edge'.

chaîne de l'agent Utilisateur de Bord:

Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.9600

Chaîne d'agent utilisateur de IE10 en mode Edge:

Mozilla / 5.0 (Windows NT 6.3; WOW64; Trident /7.0; .NET4.0E; .NET4.0C; InfoPath.3; .net CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; rv: 11.0 ) comme Gecko

donc, lorsque vous utilisez javascript, vérifiez simplement le mot "Edge" dans la chaîne de caractères de l'agent utilisateur. Lorsque vous testez également pour d'autres navigateurs, assurez-vous de vérifier bord tout d'abord, sinon vous obtiendrez de faux positifs (par exemple Chrome ou Safari...)

5
répondu David Perfors 2015-07-30 11:35:14

Vous n'êtes pas seul avec ce problème. Au moment de la rédaction de ce billet, même Google Analytics n'identifie pas exclusivement le navigateur Edge.

Votre meilleur pari est de se référer à l'agent utilisateur de la demande, il sera quelque chose comme ceci:

Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, comme Gecko) Chrome / 42.0.2311.135 Safari / 537.36 Edge / 12.9600

(To extraire l'agent utilisateur de la requête en JavaScript voir ce message: obtenir L'Agent utilisateur avec JavaScript )

Edge est uniquement disponible sous Windows 10, vous pouvez donc utiliser cette connaissance pour vous assurer que votre logique est sûre. Cherchez les valeurs suivantes dans L'UA:

  • Windows NT 10.0 - qui vous dit que L'utilisateur est sur Windows 10)
  • Edge - qui vous dit que l'utilisateur est sur Edge

vous pouvez, bien sûr, juste chercher Edge aussi.

mise à Jour - 05/08

Google Analytics ont maintenant inclus Windows 10 et Edge comme dimensions de première classe et ceux-ci peuvent désormais être filtrés directement.

3
répondu Mark Cooper 2017-05-23 12:02:42
navigator.appVersion.indexOf('Edge') > -1
3
répondu cesaraviles 2017-08-01 10:54:31

le snippet que j'ai ici est aussi une copie de SO too, je suis désolé que je ne pouvais pas vous donner de référence pour le code original, mais je l'ai modifié donc ici, il est pour ceux d'entre vous qui cherchent snippet pour vérifier IE 11 et MS Edge Window 10:

var get_ie_version = function () {
    var sAgent = window.navigator.userAgent;
    var Idx = sAgent.indexOf("MSIE");

    // If IE, return version number.
    if (Idx > 0) {
        return parseInt(sAgent.substring(Idx+ 5, sAgent.indexOf(".", Idx)));
    }
    // Condition Check IF IE 11 and or MS Edge
    else if ( !!navigator.userAgent.match(/Trident\/7\./)
        || window.navigator.userAgent.indexOf("Edge") > -1 )
    {
        return 11;
    } else {
        return 0; //It is not IE
    }
};
2
répondu Meily Chhon 2016-07-12 08:27:45

https://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx

essayer:

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp. );
  }
  return rv;
}
function checkVersion()
{
  var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();

  if ( ver > -1 )
  {
    if ( ver >= 8.0 ) 
      msg = "You're using a recent copy of Internet Explorer."
    else
      msg = "You should upgrade your copy of Internet Explorer.";
  }
  alert( msg );
}

remplacer la chaîne Microsoft Internet Explorer par peut-être quelque chose de Edge ou similaire.

EDIT: Vous pouvez trouver ce qu'est la chaîne user agent avec:

alert(navigator.userAgent)
0
répondu Martin Fischer 2015-07-30 10:51:35

tout le monde semble dire la même chose ici, sauf que personne n'a fourni une solution solide 1 doublure.

donc de cette réponse, https://stackoverflow.com/a/32107845/584147

qui dit simplement que,

  1. ces deux navigateurs (IE 11 & Edge) utilisent le navigateur.appName de "Netscape" (par rapport aux anciennes versions de IE qui utilisent "Microsoft Internet Explorer " comme navigateur.appName)
  2. dans IE 11 le navigateur.appVersion dit "trident", dans Edge le navigateur.appVersion ne dit pas trident

j'ai transformé ceci en une simple doublure 1 pour tous ceux qui finissent ici et qui en ont besoin.

var isieEdge = (navigator.appName == "Netscape") && (navigator.appVersion.indexOf('Trident') === -1); // IE Edge

alert(isieEdge);
-2
répondu NinjaKC 2017-05-23 10:31:19