Обнаружение браузера Edge Legacy, а не Edge Chromium

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 по-прежнему является краем в пользовательском агенте. Есть ли что-нибудь еще, что я мог бы использовать, что позволило бы мне различать их?

Если вы встраиваете что-то из ArcGIS, наверняка ArcGIS обработает уведомление об ошибке?

Brad 14.12.2020 04:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
2 406
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это Edg в пользовательском агенте Edge Chromium и Edge в пользовательском агенте Edge Legacy. Таким образом, вам нужно только использовать Edge для обнаружения Edge Legacy:

navigator.userAgent.indexOf("Edge/") > -1

Ааа, это я неправильно читал. Я не понимал, что отбрасывание e было тем, как они отличали версию хрома. Спасибо!

Salfej 14.12.2020 19:15

Вы можете использовать пользовательский агент 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>

Спасибо, что указали и другие браузеры!

Salfej 14.12.2020 19:14

Это то, что вы искали?

Renato Sant'Anna 14.12.2020 19:34

Мне действительно нужен был только правильный код пользовательского агента для Legacy Edge. Ответ Ю более краток на мой конкретный вопрос.

Salfej 14.12.2020 20:07

Все версии Edge имеют слово «Edg» в userAgent, за которым следует X и заканчивается «/», где X:

  • Край = Наследие
  • Edge = на основе хрома
  • Эдга = Android
  • ЭдгиОС = iOS

поэтому для определения нужных случаев достаточно всего нескольких регулярных выражений:

// 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

Отличаются ли пользовательские агенты Edge 12 и 13?

Другие вопросы по теме