Определение браузера в JavaScript с примером кода

Как определить браузер пользователя через JavaScriptИтак, мы увидели, что каждый браузер имеет свои особенности. А так ли это важно? Очень важно. Загрузив Web-страницу со сценарием, в котором со­держатся не поддерживаемые браузером свойства, пользователь попросту не увидит ваш замысел. Существуют два подхода к решению проблемы совмес­тимости браузеров. Первый подход немного утомительный. Разработчик пи­шет два варианта для разных браузеров и затем, на основе полученной ин­формации, направляет пользователя на нужную Web-страницу. Вот небольшой пример такого сценария (листинг 1).

Листинг 1. Перенаправление пользователя на нужную Web-страницу

<script type = "text/javascript">
   var ver = navigator.appVersion;
   if (ver.indexOf("MSIE") != -1)
   {
      alert ("У вас запущен Internet Explorer");
      // window.location.href="ie.htm";
   }
   else
      alert ("У вас запущен Firefox");
      // window.location.href="firefox.htm";
</script>

Я привел упрощенный сценарий, сделав допущение, что в мире существуют только два браузера. В реальной жизни, конечно, потребуется доработка; кроме того, у рассмотренного сценария есть один недостаток — требуется создание дополнительных Web-страниц под разные браузеры. Второй под­ход — использование оператора условия if. Рассмотрим на примере, для че­го воспользуемся свойством appName. У Internet Explorer при вызове данного свойства возвращается строка Microsoft Internet Explorer, у браузера Mozilla Firefox — Netscape (листинг 2).

Листинг 2. Другой способ определения браузера

<script type = "text/javascript">
   var errorText = 'Не могу определить глубину цвета';
   if (navigator.appName.indexOf('Netscape') != -1)
      if (navigator.appVersion.substr(0, 1) > 3)
         document.write('Глубина цвета: ' + window.screen.pixelDepth)
      else
         document.write(errorText);

   if (navigator.appName.indexOf('Microsoft') != -1)
      if (navigator.appVersion.substr(0, 1) > 3)
         document.write('Глубина цвета: ' + window.screen.colorDepth)
      else
         document.write(errorText);
</script>

<NOSCRIPT>
   Увы, ваш браузер не поддерживает выполнение сценариев,
   поэтому я не могу определить настройки вашего монитора.
</NOSCRIPT>

В этом примере сначала определяется название браузера, затем его версия, после чего, с помощью поддерживаемых свойств, выводится информация. Как видно из этого сценария, у Netscape Navigator для определения глу­бины цвета монитора используется свойство pixelDepth, а у Internet Ex­plorer свойство colorDepth.

ПРИМЕЧАНИЕ

Хорошая новость для разработчиков. Браузер Mozilla Firefox поддерживает оба эти свойства.

Обратите внимание, что нам нет острой необходимости помнить всю воз­вращаемую строку. С помощью функции indexOf мы определяем позицию в строке одного слова. Этого вполне достаточно, чтобы сценарий был работоспо­собным. Только не забывайте, что не только Mozilla Firefox имеет имя приложе­ния Netscape. Существует, к примеру, еще и браузер Netscape Navigator (есть ли еще есть???).

Хотя мы с вами договорились, что в моем блоге все примеры тестируются только на Internet Explorer и Mozilla Firefox, я все-таки приведу не­большой пример определения версии используемого браузера. Немного тео­рии. Написать полностью универсальную функцию, определяющую браузер, установленный у пользователя, невозможно. Слишком много их развелось, и у каждого разработчика браузера свое видение объектной модели. Можно остановиться только на самых популярных и пренебречь остальными.

Итак, Internet Explorer используют в своей модели конструкции типа document.aii, а Netscape Navigator — document.layers. Обе эти конструкции не являются стандартом, поэтому избегайте их использования на своих Web-страницах. Старые версии браузера Opera тоже грешили нестандартной кон­струкцией document.aii.item. Но последние версии всех этих браузеров сделали шаг вперед и поддерживают правильную конструкцию document.getEiementByid (Mozilla Firefox изначально пытался следовать стандартам). Поэтому во многих сценариях используется приблизительно такой код (листинг 3).

Листинг 3. Еще один пример определения браузеров

var bNN4 = document.layers;
var bIE4 = document.all && document.all.item;
// проверка поддержки document.all.item необходима для отсечения Opera
var bW3CDOM = document.getElementById;
var bDOMBrowser = bNN4 || bIE4 || bW3CDOM;

Я привел только маленький кусочек кода сценария. Применение этого кода в реальной программе останется вам в качестве домашнего задания.

 

Вас заинтересует / Intresting for you:

JavaScript: определение версии...
JavaScript: определение версии... 1453 просмотров Дэйзи ак-Макарова Sun, 11 Nov 2018, 05:40:51
JavaScript: определение свойст...
JavaScript: определение свойст... 3523 просмотров Александров Попков Fri, 02 Nov 2018, 10:52:06
JavaScript: определение версии...
JavaScript: определение версии... 1725 просмотров Дэйзи ак-Макарова Sun, 11 Nov 2018, 05:31:48
Объект Navigator Javascript: и...
Объект Navigator Javascript: и... 5963 просмотров Денис Tue, 25 Sep 2018, 06:30:01
Войдите чтобы комментировать

apv аватар
apv ответил в теме #10414 2 года 2 мес. назад
Хороший пример кода. Доступно показано как узнать браузере пользователя на языке javascript!