ArcGIS отказывается от использования браузеров IE11 и Legacy Edge с текущими и будущими версиями их JavaScript API.
https://www.esri.com/arcgis-blog/products/arcgis/announcements/so-long-internet-explorer-11/
Я хотел бы знать, как настроить таргетинг на устаревшую версию Edge и предупредить пользователей, что все может работать неправильно. С использованием:
navigator.userAgent.indexOf("Edge/") > -1 || navigator.userAgent.indexOf("Edg/") > -1;
не работает, так как Chromium Edge по-прежнему является краем в пользовательском агенте. Есть ли что-нибудь еще, что я мог бы использовать, что позволило бы мне различать их?
Это Edg
в пользовательском агенте Edge Chromium и Edge
в пользовательском агенте Edge Legacy. Таким образом, вам нужно только использовать Edge
для обнаружения Edge Legacy:
navigator.userAgent.indexOf("Edge/") > -1
Ааа, это я неправильно читал. Я не понимал, что отбрасывание e было тем, как они отличали версию хрома. Спасибо!
Вы можете использовать пользовательский агент window.navigator, чтобы проверить, является ли браузер Microsoft Chromium Edge или Chrome.
Код, как показано ниже:
<script>
var browser = (function (agent) {
switch (true) {
case agent.indexOf("edge") > -1: return "edge";
case agent.indexOf("edg/") > -1: return "chromium based edge (dev or canary)"; // Match also / to avoid matching for the older Edge
case agent.indexOf("opr") > -1 && !!window.opr: return "opera";
case agent.indexOf("chrome") > -1 && !!window.chrome: return "chrome";
case agent.indexOf("trident") > -1: return "ie";
case agent.indexOf("firefox") > -1: return "firefox";
case agent.indexOf("safari") > -1: return "safari";
default: return "other";
}
})(window.navigator.userAgent.toLowerCase());
document.body.innerHTML = window.navigator.userAgent.toLowerCase() + "<br>" + browser;
</script>
Спасибо, что указали и другие браузеры!
Это то, что вы искали?
Мне действительно нужен был только правильный код пользовательского агента для Legacy Edge. Ответ Ю более краток на мой конкретный вопрос.
Все версии Edge имеют слово «Edg» в userAgent, за которым следует X и заканчивается «/», где X:
поэтому для определения нужных случаев достаточно всего нескольких регулярных выражений:
// is-edge.js v1
function isEdge(versionName, userAgent){
versionName = versionName ? versionName.toLowerCase() : 'desktop';
userAgent = userAgent ? userAgent : navigator.userAgent;
switch(versionName){
case 'desktop':
return (/Edge?//).test(userAgent);
case 'chromium':
return (/Edg//).test(userAgent);
case 'legacy':
return (/Edge//).test(userAgent);
case 'mobile':
return (/Edg(A|iOS)//).test(userAgent);
case 'android':
return (/EdgA//).test(userAgent);
case 'ios':
return (/EdgiOS//).test(userAgent);
};
};
Пример использования:
// checks if the browser is edge on a desktop (just windows, right?)
isEdge('desktop'); // boolean
isEdge(); // boolean (empty = 'desktop')
// check if the browser is the edge and the version is based on chromium (version with the blue and green logo with waveform)
isEdge('chromium'); // boolean
// check if the browser is the edge and the version is legacy (version with blue logo similar to internet explorer)
isEdge('legacy'); // boolean
// check if the browser is the edge for android OR iOS
isEdge('mobile'); // boolean
// check if the browser is the edge for android
isEdge('android'); // boolean
// check if the browser is the edge for iOS
isEdge('ios'); // boolean
https://learn.microsoft.com/pt-br/microsoft-edge/web-platform/user-agent-string
Если вы встраиваете что-то из ArcGIS, наверняка ArcGIS обработает уведомление об ошибке?