|    | 
СИ-БИ техника | КВ техника | УКВ техника | Радиоизмерения | Защита от TVI | Источники питания | Софт | Расчеты | Справочники
Главная arrow Программирование arrow Java arrow Как определить название и версию Web-обозревателя?  

Как определить название и версию Web-обозревателя?

Проблема

Мне очень нужно узнать название программы Web-обозревателя и его точную версию. Помогите!

Решение

Использование универсальной функции jspsGetProgramInfo (ЛИСТИНГ 3.1),

поддерживающей Internet Explorer, Opera, Mozilla, Firefox и Navigator. Эта функция не принимает параметров и возвращает экземпляр особого объекта programInfo, свойства которого предоставляют доступ к различным параметрам Web-обозревателя.

Свойства объекта programInfо таковы:

programName — название программы Web-обозревателя;

programVersion — версия программы Web-обозревателя;

operaConpatibiiityMode— режим совместимости Opera ("MSIE6.0", "Mozilla 5.0" или "Opera"; для всех остальных Web-обозревателей возвращает пустую строку);

  programPlatform— полное название клиентской операционной системы;

  programLanguage— язык, поддерживаемый Web-обозревателем ("га" для русского языка, "en" для английского и т. д.);

systemLanguage— язык клиентской операционной системы (если Web-обозреватель не поддерживает этот параметр, возвращается пустая строка).

Все возвращаемые этими свойствами значения имеют строковый тип.

Листинг 3.1. Функция japsGet Programinfо, возвращающая сведения о Web-обозревателе

var JSPS_GPI_MSIE = "Microsoft Internet Explorer"; var JSPS_GPI_OPERA = "Opera"; var JSPS_GPIJ10ZILLA = "Mozilla"; var JSPS_GPI_FIREFOX = "Firefox"; var JSPS_GPI_NAVIGATOR = "Navigator";

// Объявление объекта Programinfо function Programinfо() {

this.programName = "";

this.programVersion = "";

this.OperaCompatibilityMode = "";

this.programPiatform = "";

this.programLanguage = "";

this.systemLanguage = ""; }

// Объявление самой функции jspsGetProgramlnfo function jspsGetProgramlnfo()

{

var piObj = new Programlnfо(); var ua = navigator.userAgent; var an = navigator.appName;

var isntOpera = (ua.indexOf(JSPS_GPI_OPERA) == -1) ; var nl, n2; switch (an) {

case JSPS_GPI_MSIE:

piObj.programLanguage = navigator.browserLanguage; if (isntOpera) { piObj .prograinName = an; nl = ua.indexOf("MSIE") + 5; n2 = ua.indexOf(";", nl);

piObj.programVersion = ua.substring(nl, n2) ; nl = n2 + 2;

n2 = ua. indexOf (",-", nl) ;

piObj.programPlatform = ua.substring(nl, n2); piObj.systemLanguage = navigator.systemLanguage; } else {

piObj.programName = JSPS_GPI_OPERA; nl = ua.lastlndexOf(" ") + 1; n2 = ua.length;

piObj.programVersion = ua.substring(nl, n2); piObj .OperaCoinpatibilityMode = "MSIE 6.0"; nl = ua.indexOf("MSIE") +10; n2 = ua.indexOf(";", nl);

piObj.programPlatform = ua.substring(nl, n2); } break; case "Netscape": if (isntOpera) {

nl = ua.indexOf(";")+ 1;

nl = ua.indexOf(";", nl) + 2;

n2 = ua.indexOf(";", nl);

piObj.programPlatform = ua.substring(nl, n2);

if (ua.indexOf(JSPS_GPI_FIREFOX) != -1) { piObj.programName = JSPS_GPI_FIREFOX; nl = ua.lastlndexOf("/") + 1; n2 = ua.length;

piObj.programVersion = ua.substring(nl, n2) ; piObj .programLanguage = navigator. language ; } else { piObj.programLanguage = •bnavigator.language.substring(0, 2); if (ua.indexOf("Netscape") != -1) {

piObj.programName = JSPS_GPI_NAVIGATOR; nl = ua.lastlndexOf("/") + 1; n2 = ua.length;

piObj.programVersion = ua.substring(nl, n2); } else {

piObj.programName = JSPS_GPI_MOZILLA; nl = ua.indexOf("rv:") + 3; n2 = ua.indexOf(")");

piObj.programVersion = ua.substring(nl, n2); } } } else {

piObj .programName = JSPS_GPI_OPERA; nl = ua.lastlndexOf(" ") + 1; n2 = ua.length;

piObj.programVersion = ua.substring(nl, n2); piObj.OperaCompatibilityMode = "Mozilla 5.0"; nl = ua.indexOf("(")+ 1;                                         

n2 = ua.indexOf(";", nl);

piObj.programPlatform = ua.substring(nl, n2); piObj.programLanguage = navigator.browserLanguage; } break; case JSPS_GPI_OPERA:

piObj.programName = an;

nl = ua.indexof("/") + 1; n2 = ua.indexof(" ", nl);

piObj.programVersion = ua.substring(nl, n2); piObj.OperaCompatibilityMode = an; nl = n2 + 2;

n2 = ua.indexOf(";", nl) ;

piObj.programPlatform = ua.substring(nl, n2); piObj.programLanguage = navigator.browserLanguage; break; } return piObj; }

Хорошая идея!

Поместите объявление этой функции в файл сценариев browserdetect.js. Впоследствии, чтобы использовать ее, достаточно будет просто подключить к Web-странице этот файл сценариев с помощью тега:

<SCRIPT SRC="browserdetect.js"></SCRIPT>

Кроме объявления функции jspsGetPrograminfo и служебного объекта Programinfo, листинг 3.1 содержит также объявления пяти псевдоконстант, содержащих названия всех Web-обозревателей, опознаваемых этой функцией. Вот эти константы:

jsps_gpi_msie содержит строку "Microsoft Internet Explorer";

jsps_gpi_opera содержит строку "Opera";

jsps_gpi_mozilla содержит строку "Mozilla";

jsps_gpi_firefox содержит строку "Firefox";

jsps_gpi_navigator содержит строку "Navigator".

Мы можем использовать их в сценариях для проверки, та ли это программа Web-обозревателя, которая нам нужна:

var pi = jspsGetPrograminfo();

if (pi.programName == JSPS_GPI_MSIE)

Пример

Вот фрагмент кода Web-страницы, выдающей сведения о программе Web-обозревателя:

<BODY>

<SCRIPT TYPE="text/javascript"> var pi = jspsGetPrograminfo();

document.write("<Р>Название программы - " + pi.programName +".</P>");

document.write("<Р>Версия программы - " + pi.programVersion .+".</P>"};

if (pi.OperaCoinpatibilityMode != "")

document.write("<Р>Режим совместимости с " +pi.OperaCompatibilityMode + ".</P>"); document.write("<P>OC клиента - " + pi.programPlatform + ".</P>"); document.write("<Р>Язык программы - " + pi.programLanguage +".</P>") ; if (pi.systemLanguage != "")

document.write("<P>H3biK ОС клиента - " + pi.systemLanguage +".</P>"); </SCRIPT> </BODY>

Народ советует

Если нам понадобится писать сценарии, включающие многочисленные проверки Web-обозревателя, лучше всего вызвать функцию j spsGetProgramlnfо В самом начале и поместить возвращенное ей значение в глобальную переменную. Впоследствии нам не придется вызывать каждый раз эту функцию — нужные данные всегда будут под рукой.

Что дальше?

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



RLBN.ru - Электроника и компьютеры

0.1465
Hosted by uCoz