БлогNot. Почему не нужно определять браузер и ОС из Javascript

Почему не нужно определять браузер и ОС из 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.


теги: javascript браузеры

04.04.2019, 15:25; рейтинг: 124