Перенаправление клиента на разные страницы в зависимости от Web-браузера
Объект navigator предоставляет информацию о самом Web-браузере.
Свойства объекта navigator:
? appName — имя Web-браузера;
? appCodeName — кодовое имя версии Web-браузера;
? appVersion — версия Web-браузера;
? appMinorVersion — вторая цифра в номере версии Web-браузера;
? userAgent — комбинация свойств appCodeName и appVersion;
? cpuClass — тип процессора клиентского компьютера;
? platform — название клиентской платформы;
? systemLanguage — код языка операционной системы клиента;
? browserLanguage — код языка Web-браузера;
? userLanguage — код языка Web-браузера;
? onLine — режим подключения: true, если клиент в настоящее время подключен к Интернету, и false, если отключен;
? cookieEnabled — режим работы cookie: возвращает true, если прием
cookie разрешен.
Продемонстрируем все на примере (листинг 3.51).
Листинг 3.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(naviga*tor.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 + " ==> " + navigator[p] + "<br>");
}
Мы уже не раз говорили, что разные Web-браузеры могут по-разному выпол- нять программный код. По этой причине часто приходится писать персо- нальный код под каждый Web-браузер. В листинге 3.52 приведен пример
скрипта, перенаправляющего клиента на разные страницы в зависимости от названия Web-браузера.
Листинг 3.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-браузер, но и под опре- деленную его версию.
П РИМ Е ЧАНИЕ
Так как поисковые машины не умеют обрабатывать код JavaScript, на прак- тике лучше не использовать перенаправление, а обрабатывать различия на одной Web-странице. Кроме того, вместо определения названия и версии лучше использовать метод проверки функциональных возможностей Web- браузера. Например, проверить наличие необходимого метода, указав его без круглых скобок в операторе if.
В разд. 1.16 мы рассмотрели специальный тег, который можно использовать в Web-браузере Internet Explorer. Для языка JavaScript Internet Explorer также предоставляет условные комментарии. Они начинаются с комбинации сим- волов /*@cc_on и заканчиваются комбинацией @*/:
/*@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
@*/
Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)
Похожие посты:
- Кросс-броузерные решения (0)
- Возможность поддержки нескольких версий Internet Explorer в Windows (0)
- Достижение прозрачности изображения в формате PNG в Internet Explorer 6 (1)
- Приступая к работе Django (0)
- Использование Django совместно с Apache и mod_python (0)
- Позиционирование блока (0)
- Первая программа на JavaScript (0)