JavaScript: свойство userAgent объекта navigator

свойство userAgent объекта navigator в JavaScriptДавайте подробнее рассмотрим свойство userAgent объекта navigator, с помощью которого можно извлечь много полезной информации. Когда вы посещаете Web-страницу, то ваш браузер посылает строку userAgent серверу, по которому сервер определяет ваш браузер, номер версии и другие детали о вашей системе. Данная информация помогает серверу подстроиться под работу вашего браузера. Строка, возвращаемая свойством userAgent, у всех браузеров уникальная. Например, у браузера Opera версии 56.0.3051.99, запущенного в системе Windows 10, свойство возвращает очень длинную строку:

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 YaBrowser/18.10.0.2724 Yowser/2.5 Safari/537.36

ПРИМЕЧАНИЕ

Чтобы быстро получить строку userAgent в своем браузере, наберите прямо в адресной строке следующее (с соблюдением регистра символов): javascript:alert(navigator.userAgent).

 Разберем еще один пример свойства userAgent.

Строка userAgent

Рис. 1. Строка userAgent

Разберем строку userAgent по частям (рис. 1).

  • Moziiia/4.0 — по историческим причинам браузер использует имя Mozilla и номер версии 4.0 (к версии Internet Explorer никакого отношения не имеющий).
  • compatible — флаг, используемый современными браузерами, для инди­кации совместимости с различными возможностями.
  • msie 7.0 — маркер версии, указывающий на браузер и его номер версии. В данном случае указывает на Internet Explorer 0
  • Windows nt 6.0 — маркер платформы, указывающий на операционную систему и ее номер версии. В нашем случае указывает на Windows Vista.

Кроме этих стандартных записей могут существовать и другие дополнитель­ные маркеры, которые могут быть добавлены другими приложениями. О не­которых из них поговорим чуть позже. Для любознательных приведу табл. 1 и 2 справочного характера

Таблица 1. Маркеры версии браузера Internet Explorer

Маркер версии бразузера

Браузер

MSIE 8.0

Internet 8.0

MSIE 7.0

Internet 7.0

MSIE 7.0b

Internet Explorer 7 (Beta 1)

MSIE 6.0

Microsoft Internet Explorer 6

MSIE 6.0b

Internet Explorer 6 (pre-release)

MSIE 5.5

Internet Explorer 5.5

MSIE 5.01

Internet Explorer 5.01

MSIE 5.

0 Internet Explorer 5

MSIE 5.0b1

Internet Explorer 5 (pre-release)

MSIE 4.01

Internet Explorer 4.01

 

Таблица 2. Маркеры платформы для определения операционной системы

Маркер платформы

Платформа

Windows NT 6.0

Windows Vista

Windows NT 5.2

Windows Server 2003; Windows XP x64 Edition

Windows NT 5.1

Windows XP

Windows NT 5.01

Windows 2000, Service Pack 1 (SP1)

Windows NT 5.0

Windows 2000

Windows NT 4.0

Microsoft Windows NT 4.0

Windows 98; Win 9x 4.90

Windows Millennium (Windows ME)

Windows 98

Windows 98

Windows 95

Windows 95

Windows CE

Windows CE

В данный момент уже  известно, что в Internet Explorer 8 Beta 1 свойство

userAgent будет иметь строку

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)

Как видите, изменилась подстрока msie 7.0 на msie 8.0. Используя эти раз­личия, можно писать сценарии для разных версий Internet Explorer. В сле­дующем примере показан сценарий определения браузера и его версии (лис­тинг 1).

Листинг 1. Определение версии браузера Internet Explorer

<script type = "text/javascript">

function getIEVersion()
   // Возвращает номер версии Internet Explorer или –1,
   // если используется другой браузер
   {
      var retval = -1; // Возвращаемое значение (по умолчанию равно -1,
      // т. е. другой браузер)
      if (navigator.appName == 'Microsoft Internet Explorer')
      {
         var ua = navigator.userAgent;
         var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
         if (re.exec(ua) != null)
            retval = parseFloat( RegExp.$1 );
      }
      return retval;
   }

   function checkVersion()
   {
      var msg = "Вы используете не Internet Explorer";
      var ver = getIEVersion();
      if (ver > -1)
      {
         if (ver >= 7.0)
            msg = "Вы используете Internet Explorer 7 или Internet Explorer 8."
         else msg = "Вам следует обновить версию Internet Explorer.";
      }
      alert( msg );
   }

</script>

<p>
   <input type="button" value="Версия IE"
   onClick="alert(getIEVersion())">
</p>

В этом примере мы определяем версию браузера Internet Explorer и, если ви­дим, что она ниже 7 версии, то выводим сообщение о необходимости обно­вить браузер. Особое внимание нужно обратить на строчку ver >= 7. Очень многие программисты допустили в свое время одну и ту же ошибку, когда использовали выражение типа ver == 4. Этот код не учитывал возможность увеличения номера версии браузера, в результате чего после появления но­вых релизов Internet Explorer страницы становились недоступными для пользователей. Поэтому еще раз пересмотрите свои страницы. Возможно, у вас еще сохранились старые неправильные конструкции в коде. По заверениям разработчиков из Microsoft новая версия Internet Explorer 8.0 будет полно­стью соответствовать стандартам CSS 2.1. Поэтому вам, наверняка, приго­дится функция checkversion() с выражением if (ver >= 8.0), чтобы соот­ветствовать новым стандартам.

 

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

JavaScript: определяем размеры...
JavaScript: определяем размеры... 1536 просмотров Александров Попков Sun, 04 Nov 2018, 14:43:51
Объект Navigator Javascript: и...
Объект Navigator Javascript: и... 5942 просмотров Денис Tue, 25 Sep 2018, 06:30:01
JavaScript: определение версии...
JavaScript: определение версии... 1434 просмотров Дэйзи ак-Макарова Sun, 11 Nov 2018, 05:40:51
Определение браузера в JavaScr...
Определение браузера в JavaScr... 2668 просмотров Александров Попков Fri, 02 Nov 2018, 11:03:01
Войдите чтобы комментировать

 аватар
ответил в теме #10422 2 года 1 мес. назад
fantastic post, very informative. I ponder why the opposite experts of this sector do not notice this.
You should continue your writing. I'm sure, you have a great readers' base already!
สล็อตbetflix