Почему не нужно определять браузер и ОС из Javascript
Вечная тема - "как определить браузер и операционку из Javascript"?, и только один правильный ответ - не определять никак, а писать так, чтобы проблем с совместимостью не возникало :) Опираться на стандарты W3C, а если браузер их не соблюдает - его проблема :)
Это на самом деле так. Браузеры развиваются быстро и классический код для определения версий уже не годится.
Никогда не годился и navigator.userAgent, там вообще дичь полная.
Тем не менее, для не слишком требовательного определения распространённых браузерных движков и типовых операционок какой-то такой код, как нижеприведённый, использовать можно, а можно пополнить его ещё строчками для планшетов, коммуникаторов и т.п.
Этого добра очень много по сети, писать его муторно и всё обычно перестаёт работать в следующей версии браузера или операционки :)
Со всеми этими оговорками, вот пара функций, они неполны:
<div id="USER_DATA"></div> <script> function getBrowser() { if (/Konqueror|KHTML/.test(navigator.userAgent) && !/Apple/.test(navigator.userAgent)) return 'KHTML'; if (/KHTML/.test(navigator.userAgent) && /Apple/.test(navigator.userAgent)) return 'Safari'; if (!!window.opera) return 'Opera'; if (!!(window.attachEvent && !window.opera)) return 'Internet Explorer'; if (/Gecko/.test(navigator.userAgent) && !/Konqueror|KHTML/.test(navigator.userAgent)) return 'Gecko'; return 'Другой браузер'; } function getOS() { if (navigator.platform.indexOf("Win") > -1) return 'Windows'; if (navigator.platform.indexOf("Mac") > -1) return 'Mac'; if (navigator.platform.indexOf("Linux") > -1) return 'Linux'; return 'Другая ОС'; } document.getElementById('USER_DATA').innerHTML = '<p>Свойство userAgent: ' + navigator.userAgent + '</p>' + '<p>Свойство platform: ' + navigator.platform + '</p>' + '<p>Браузер: ' + getBrowser() + ', ОС: ' + getOS() + '</p>'; </script> <noscript><p>Включите Javascript для работы приложения!</p></noscript>
А лучше посмотрите у Мозилки, там подробнее коды.
Кстати, ИЕ11 считает себя Gecko, но он и правда уже не лагает на скриптах, работающих в Gecko.
04.04.2019, 15:25 [1656 просмотров]