Оглавление

17.6. Объект navigator.

Получение информации о Web-браузере пользователя. Перенаправление клиента на разные страницы в зависимости от Web-браузера

 

Объект navigator предоставляет информацию о самом Web-браузере.


Свойства объекта navigator:
□  appName — имя Web-браузера;

□  appcodeName — кодовое имя версии Web-браузера;
□  аррversion — версия Web-браузера;
□  appMinorVersion — вторая цифра в номере версии Web-браузера;
□  userAgent — комбинация свойств appcodeName и appVersion;

□  cpuciass — тип процессора клиентского компьютера;
□  platform — название клиентской платформы;
□  systemLanguage — код языка операционной системы клиента;
□  browserLanguage — код языка Web-браузера;
□  userLanguage — код языка Web-браузера;
□  onLine — режим подключения: true, если клиент в настоящее время подключен к Интернету, и false, если отключен;
□  cookieEnabied — режим работы cookie: возвращает true, если прием cookie разрешен.


Продемонстрируем все на примере (листинг 51).

 

Листинг 51. Информация о Web-браузере


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
         "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
 <title>Информация о Web-браузере</title>
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<h1 style="text-align: center">Информация о Web-браузере</h1>
<div>
<script type="text/javascript">
<!--
document.write(navigator.appName + " – имя Web-браузера.<br>");
document.write(navigator.appCodeName);
document.write(" – кодовое имя версии Web-браузера.<br>");
document.write(navigator.appVersion + " – версия Web-браузера.<br>");
document.write(navigator.appMinorVersion);
document.write(" – вторая цифра в номере версии Web-браузера.<br>");
document.write(navigator.userAgent + " – комбинация свойств ");
document.write("appCodeName и appVersion.<br><br>");
document.write(navigator.cpuClass);
document.write(" – тип процессора клиентского компьютера.<br>");
document.write(navigator.platform);
document.write(" – название клиентской платформы.<br>");
document.write(navigator.systemLanguage);
document.write(" – код языка операционной системы клиента.<br>");
document.write(navigator.browserLanguage);
document.write(" – код языка Web-браузера (browserLanguage).<br>");
document.write(navigator.userLanguage);
document.write(" – код языка Web-браузера (userLanguage).<br><br>");
if (navigator.onLine) {
   document.write("Клиент в настоящее время подключен к Интернету.");
} 
else {
   document.write("Клиент в настоящее время отключен от Интернета.");
}
document.write("<br>");
if (navigator.cookieEnabled) document.write("Прием cookie разрешен.");
else document.write("Прием cookie запрещен.");
//-->
</script>
</div>
</body>
</html>

 

Посмотреть пример...


Вывести все поддерживаемые свойства и методы объекта navigator позволяет следующий код:

    for (var p in navigator) {

       document.write(p + " ==&gt; " + navigator[p] + "<br>");

    }


Мы уже не раз говорили, что разные Web-браузеры могут по-разному выполнять программный код. По этой причине часто приходится писать персональный код под каждый Web-браузер. В листинге 52 приведен пример скрипта, перенаправляющего клиента на разные страницы в зависимости от названия Web-браузера.

 

Листинг 52. Перенаправляем клиента на разные страницы в зависимости от названия Web-браузера


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
         "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
 <title>Перенаправляем клиента на разные страницы</title>
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<script type="text/javascript">
<!--
var name1 = navigator.appName;
if (name1.indexOf("Explorer") != -1) {
   var Version1 = navigator.appVersion;
   var p =/compatible\;\s+\w+\s+(([0-9]+)\.[0-9]+)\;/i;
   p.exec(Version1);
   if (RegExp.$2=="6") {
     window.location.href = "explorer6.html";
   }
   else {
      if (RegExp.$2=="7") {
         window.location.href = "explorer7.html";
      }
      else {
         if (parseInt(RegExp.$2)>=8) {
            window.location.href = "explorer8.html";
         }
         else {
            window.location.href = "explorer.html";
         }
      }
   }
}
if (navigator.userAgent.indexOf("Firefox") != -1) {
   window.location.href = "firefox.html";
}
if (name1.indexOf("Opera") != -1) {
   window.location.href = "opera.html";
}
//-->
</script>
<p>Информация для других Web-браузеров</p>
</body>
</html>

 

В случае с Microsoft Internet Explorer мы проверяем также версию Web-браузера с помощью регулярных выражений. Таким образом, можно написать Web-страницу не только под определенный Web-браузер, но и под определенную его версию. (1)

 

В разд. 1.16 мы рассмотрели специальный тег, который можно использовать в Web-браузере Internet Explorer. Для языка JavaScript Internet Explorer также предоставляет условные комментарии. Они начинаются с комбинации символов /*@сс_оп и заканчиваются комбинацией @*/:
    /*@cc_on
        window.alert("Это инструкция для Internet Explorer");
    @*/
Внутри такой конструкции могут быть указаны ключевые слова @if, ©else и @end. Например, выполнить один блок выражений только в Internet Explorer, а другой блок в остальных Web-браузерах позволяет следующий код:


  /*@cc_on
     @if (@_jscript)
       window.alert("Это сообщение выведет Internet Explorer");
     @else*/
        // Этот блок в IE выполнен не будет
        window.alert("А это сообщение в другом Web-браузере");
     /*@end
  @*/

 

Примечания:
  • Так как поисковые машины не умеют обрабатывать код JavaScript, на практике лучше не использовать перенаправление, а обрабатывать различия на одной Web-странице. Кроме того, вместо определения названия и версии лучше использовать метод проверки функциональных возможностей Web-браузера. Например, проверить наличие необходимого метода, указав его без круглых скобок в операторе if.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити