How to target Windows 10 Edge browser with javascript

懵懂的女人 提交于 2019-11-28 07:13:14
sandstrom

Try to detect features instead of a specific browser. It's more future-proof. Only rarely should you use browser detection.

With that out of the way: one option is to use a library (there are many intricacies to User Agent strings), or alternatively to parse window.navigator.userAgent manually.

Using a parser library

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

Raw approach with 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

Here's the simple script to detect Edge browser

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

Explaination:

/Edge/

A regular expression to search for the string 'Edge' - which we then test against the 'navigator.userAgent' property

The useragent string contains Edge/12.9600, where the 12.9600 is the version number I tested with. This is completely different from the user agent string of Internet Explorer in 'Edge' mode.

User agent string of Edge:

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

User agent string of IE10 in Edge mode:

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) like Gecko

So when using javascript, just check for the word 'Edge' in the user agent string. When you also test for other browsers, make sure you check Edge first, otherwise you will get false positives (for example Chrome or Safari...)

Mark Cooper

You are not alone with this problem. At time of writing this post, even the Google Analytics does not exclusively identify the Edge browser.

Your best bet is to refer to the user agent of the request, it will be something like this:

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

(To extract the user agent from the request in JavaScript see this post: Getting the User Agent with JavaScript)

Edge is only available in Windows 10 so you can use this knowledge to help ensure your logic is safe. Look for the following values in the UA:

  • Windows NT 10.0 - which tells you that the user is on Windows 10)
  • Edge - which tells you that the user is on Edge

You could, of course, just look for Edge too.

Update - 05/08

Google Analytics have now included Windows 10 and Edge as first class dimensions and these can both now be filtered directly.

cesaraviles
navigator.appVersion.indexOf('Edge') > -1

The snippet that I have here is also copy from SO too, am sorry that I could not give you reference for the original code, but I have modified it so here it is for those of you looking for snippet to check for IE 11 and 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
    }
};
Martin Fischer

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

Have a try with:

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 );
}

Replace the String Microsoft Internet Explorer with maybe something of Edge or similar.

EDIT: You can find out what the user agent string is with:

alert(navigator.userAgent)
NinjaKC

Everyone seems to be saying the same thing here, except no one has provided a solid 1 liner solution.

So from this answer, https://stackoverflow.com/a/32107845/584147

Which simply says that,

  1. Both of these browsers (IE 11 & Edge) use the navigator.appName of "Netscape" (compared to older versions of IE which use "Microsoft Internet Explorer" as the navigator.appName)
  2. in IE 11 the navigator.appVersion says 'trident', in Edge the navigator.appVersion does not say trident

I have turned this into a simple 1 liner for anyone else who ends up here and in need of it.

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

alert(isieEdge);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!