web-dev-qa-db-fra.com

Comment cibler un navigateur Windows 10 Edge avec javascript

Je sais que vous devriez faire la détection des fonctionnalités lorsque cela est possible, mais pouvez-vous détecter en Javascript si le navigateur est le navigateur Microsoft Edge?

Je maintiens un ancien produit et je souhaite afficher un avertissement indiquant que certaines fonctionnalités pourraient être endommagées sans qu'il soit nécessaire de perdre beaucoup de temps à réparer l'ancien code.

26
Willem de Wit

Essayez de détecter des fonctionnalités au lieu d'un navigateur spécifique. C'est plus à l'épreuve du futur. Il est rare que vous utilisiez la détection de navigateur.

Une fois cela fait, une option consiste à utiliser une bibliothèque (il existe de nombreuses subtilités dans les chaînes de l'agent utilisateur) ou à analyser window.navigator.userAgent manuellement.

Utiliser une bibliothèque d'analyseur

# 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;

Approche brute 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
33
sandstrom

Voici le script simple pour détecter le navigateur Edge 

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 avec la propriété 'navigator.userAgent'

9
Manoj Kadolkar

La chaîne useragent contient Edge/12.9600, où 12.9600 correspond au 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 d'agent utilisateur de Edge:

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

Chaîne d'agent utilisateur d'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; Tablette PC 2.0; va: 11,0 ) comme Gecko

Ainsi, lorsque vous utilisez javascript, il vous suffit de rechercher le mot "Edge" dans la chaîne de l'agent utilisateur. Lorsque vous testez également d'autres navigateurs, vérifiez tout d'abord Edge, sinon vous obtiendrez des faux positifs (par exemple, Chrome ou Safari ...).

6
David Perfors

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

Votre meilleur pari est de faire référence à l'agent utilisateur de la demande, ce 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

(Pour extraire l'agent utilisateur de la demande en JavaScript, consultez cet article: Obtention de l'agent utilisateur avec JavaScript )

Edge est uniquement disponible dans Windows 10; vous pouvez donc utiliser ces connaissances pour garantir la sécurité de votre logique. Recherchez les valeurs suivantes dans l'UA:

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

Vous pouvez bien sûr simplement rechercher Edge également.

Mise à jour - 05/08

Google Analytics a maintenant inclus Windows 10 et Edge en tant que dimensions de première classe, qui peuvent désormais être filtrés directement.

4
Mark Cooper
navigator.appVersion.indexOf('Edge') > -1
3
cesaraviles

L’extrait que j’ai ici est aussi une copie de SO aussi, je suis désolé de ne pouvoir vous donner de référence pour le code original, mais je l’ai modifié, donc voici pour ceux d’entre vous qui recherchent l’extrait à 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
Meily Chhon

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

Essayez avec:

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.$1 );
  }
  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 );
}

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

EDIT: Vous pouvez trouver la chaîne de l'agent utilisateur:

alert(navigator.userAgent)
0
Martin Fischer