Подтвердить что ты не робот

Как настроить таргетинг на браузер Windows 10 Edge с помощью javascript

Я знаю, что вы должны делать обнаружение функции там, где это возможно, но можете ли вы обнаружить в Javascript, если браузер является браузером Microsoft Edge?

Я поддерживаю старый продукт, и я хочу показать предупреждение о том, что некоторые функции могут быть повреждены без необходимости вкладывать много времени в исправление старого кода.

4b9b3361

Ответ 1

Попробуйте обнаружить функции вместо определенного браузера. Это более надежное будущее. Лишь в редких случаях вы должны обнаруживать браузер пользователя.

Из-за этого: один из вариантов - использовать библиотеку (есть множество тонкостей для строк User Agent) или, альтернативно, вручную разобрать window.navigator.userAgent.

Использование библиотеки парсеров

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

Исходный 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

Ответ 2

В строке useragent содержится Edge/12.9600, где 12.9600 - номер версии, с которой я тестировался. Это полностью отличается от строки пользовательского агента Internet Explorer в режиме "Edge".

Строка пользовательского агента Edge:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например, Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.9600

Строка агента пользователя IE10 в режиме 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), например, Gecko

Поэтому при использовании javascript просто проверьте слово "Edge" в строке пользовательского агента. Когда вы также проверяете другие браузеры, сначала убедитесь, что вы отметили Edge, иначе вы получите ложные срабатывания (например, Chrome или Safari...)

Ответ 3

Вы не одиноки с этой проблемой. Во время написания этого сообщения даже Google Analytics не только идентифицирует браузер Edge.

Лучше всего обратиться к пользовательскому агенту запроса, это будет примерно так:

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

(Чтобы извлечь пользовательский агент из запроса в JavaScript, см. это сообщение: Получение агента пользователя с JavaScript)

Edge доступен только в Windows 10, поэтому вы можете использовать эти знания, чтобы обеспечить безопасность вашей логики. Найдите в UA следующие значения:

  • Windows NT 10.0 - который сообщает вам, что пользователь находится в Windows 10)
  • Edge - который сообщает вам, что пользователь находится на Edge

Вы могли бы, конечно, просто искать Edge тоже.

Обновление - 05/08

Google Analytics теперь включила Windows 10 и Edge в качестве размеров первого класса, и теперь они могут быть отфильтрованы напрямую.

Ответ 4

Фрагмент, который у меня есть здесь, также является копией из SO тоже, извините, что я не мог дать вам ссылку на исходный код, но я изменил его, так что здесь для тех из вас, кто ищет фрагмент, чтобы проверить IE 11 и окно MS Edge 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
    }
};

Ответ 5

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

Ответ 6

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

Попробуйте:

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

Замените строку Microsoft Internet Explorer на что-то вроде Edge или аналогичного.

EDIT: Вы можете узнать, с чем состоит строка пользовательского агента:

alert(navigator.userAgent)

Ответ 7

Здесь простой script для обнаружения браузера Edge

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

Explaination:

/Edge/

Регулярное выражение для поиска строки "Edge", которое мы затем проверяем с помощью свойства "navigator.userAgent"

Ответ 8

Кажется, что все здесь говорят одно и то же, за исключением того, что никто не предоставил твердое решение для 1 лайнера.

Итак, из этого ответа fooobar.com/info/23184/...

Что просто говорит, что

  • Оба этих браузера (IE 11 и Edge) используют navigator.appName для "Netscape" (по сравнению со старыми версиями IE, которые используют "Microsoft Internet Explorer" в качестве navigator.appName)
  • в IE 11 navigator.appVersion говорит "trident", в Edge навигатор .appVersion не говорит trident

Я превратил это в простой 1 лайнер для всех, кто попадает сюда и нуждается в нем.

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

alert(isieEdge);