Обнаружение Microsoft edge или spartan с помощью javascript

известен ли уже пользовательский агент для браузеров Edge или Spartan? Может ли кто-нибудь сказать мне, как обнаружить этот браузер и отличить его от IE до его выпуска?

5 ответов


простой поиск google нашел мне ответ, который вы ищете: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

поэтому вы должны соответствовать:"Edge\/\d+"


по данным ответ:

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

строка UA Microsoft Edge:

Mozilla / 5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, как геккон) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136

я подробно, почему в этом блоге.

Neowin недавно сообщил, что новый браузер Microsoft для Windows 10, Spartan, использует строку chrome UA,"Mozilla / 5.0 (Windows NT 10.0; WOW64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 39.0.2171.71 Safari / 537.36 Edge / 12.0". это делается специально.

вы также заметите, что вся строка заканчивается на "Edge / 12.0", чего не делает Chrome.

Я должен отметить, что это не редикальный отход от того, что Microsoft сделала с IE 11, который на Windows 8 читает: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0), как Gecko, как объясняется в этом посте.

что нюхает агент пользователя?

часто, web разработчики будут UA нюхать для обнаружения браузера. Mozilla хорошо объясняет это в своем блоге:

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

вот отличная статья объяснение истории агента пользователя.

часто ленивые разработчики просто нюхают строку UA и отключают контент на своем веб-сайте на основе того, какой браузер, по их мнению, использует зритель. Internet Explorer 8 является общей точкой разочарования для разработчиков, поэтому они часто проверяют, использует ли пользователь любую версию IE, и отключают функции.

команда Edge детализирует это еще глубже в своем блоге.

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

строка UA Internet Explorer 11:

Mozilla / 5.0 (Windows NT 6.3; Trident / 7.0; rv: 11.0) как геккон

строка UA Microsoft Edge:

Mozilla / 5.0 (Windows NT 10.0) AppleWebKit / 537.36 (KHTML, как геккон) Chrome / 42.0.2311.135 Safari/537.36 Edge / 12.10136

свойство userAgent было метко описано как" постоянно растущий пакет лжи " Патриком Х. Лауком в дискуссиях W3C. ("или, скорее, балансирующий акт добавления достаточного количества устаревших ключевых слов, которые не будут сразу иметь старый код UA-sniffing, все еще пытаясь передать немного действительно полезной и точной информации.")

мы рекомендуем веб-разработчикам избегать UA нюхать как можно больше; современная веб-платформа особенности почти все обнаруживаются в простых способах. За последний год мы видели некоторые сайты UA-sniffing, которые были обновлены для обнаружения Microsoft Edge ... только для предоставления ему устаревшего пути кода IE11. Это не лучший подход, так как Microsoft Edge соответствует поведению "WebKit", а не поведению IE11 (любые различия Edge-WebKit-это ошибки, которые мы заинтересованы в исправлении).

по нашему опыту Microsoft Edge лучше всего работает на путях кода "WebKit" на этих сайтах. Кроме того, с интернетом став доступным на более широком спектре устройств, предположите, что неизвестные браузеры хороши – пожалуйста, не ограничивайте свой сайт работой только с небольшим набором текущих известных браузеров. Если вы это сделаете, ваш сайт почти наверняка сломается в будущем.

вывод

представляя строку Chrome UA, мы можем обойти хаки, которые используют эти разработчики, чтобы представить пользователям лучший опыт.


найдите "Edge" в строке UA.

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

в моем случае проблема, которая потребовала от меня проверить Edge против Chrome, - это ошибка высоты раскрывающегося списка Chrome, которую Spartan/Edge отображает правильно. Microsoft здесь нечего исправлять, и Google игнорирует эту ошибку уже более года (она правильно отображалась в старые версии Chrome).


еще один параметр на основе обнаружения функций.

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