Проводил тесты на сайте, собрал статистику определения браузера и его версии с помощью библиотеки Jquery и php-библиотеки Browser.php
И вот что вышло (слева Jquery, а справа Browser.php):
Как видите, Jquery постоянно врет, ну ладно пусть она определяет имя браузера в котором он работает в режиме совместимости, но посмотрите на версию IE, совсем неправильно определена, вот и все выводы.
Как получить сведения о Web-обозревателе
аконичные Mozilla, Firefox и Navigator не принесут нам таких сюрпризов, как многоликий (даже чересчур) Web-обозреватель Opera. Формат выдаваемого ими значения свойства appversion таков:
<Версия исходного кода ядра> (<Олерационная система>; <Язык>) Автор получил такое значение для русской версии Firefox 1.5.0.3:
5.0 (Windows; ru)
для Mozilla 1.7 и Navigator 7 preview 1:
5.0 (Windows; en-US)
Народ предупреждает!
Заметим, что Mozilla и Navigator выдают пятибуквенный код языка, например, "ru-RU" для русского или "en-US" для американского английского. Все остальные Web-обозреватели выдают двухбуквенный код языка, например, "ru" или "еп".
Значение, возвращаемое свойством userAgent, также сильно зависит от Web-обозревателя. Internet Explorer, например, выдаст вот что:
<3начение свойства appCodeName>/<Значение свойства appVersion>
Например:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1,1.4322)
Web-обозреватель Opera, "притворяющийся" Internet Explorer 6.0 или Mozilla 5.0, при обращении к свойству userAgent выдаст такую же строку:
<3начение свойства appCodeName>/<Значение свойства appVersion> Opera<Версия Орега>
Например,
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.54
в режиме совместимости с Internet Explorer 6.0 и
Mozilla/5.0 (Windows NT 5.1; U; ru) Opera 8.54
в режиме совместимости с Mozilla 5.0. Заметим, то в обоих случаях в конце строки указывается версия Opera, так что мы всегда сможем выяснить, Opera ли это.
Web-обозреватель Opera, "представляющийся самим собой", выдаст такое значение этого свойства:
<3начение свойства appCodeName>/<Значение свойства appVersion>
т. е. как и Internet Explorer. Например:
Opera/8.54 (Windows NT 5.1; U; ru)
Firefox, как обычно, идет своим путем. Значение свойства userAgent в его случае будет таким:
Mozilla/<Версия исходного кода ядра>(<Название операционной системы>; U|l; <Версия операционной системы>;<Язык>; <Ближайшая версия Mozilla>) <Версия программного ядра>Firefox/<Версия Firefox>
Например:
Mozilla/5.0 (Windows; U; Windows NT 5.1; rU; rv:1.8.0.3) Gecko/20060426Firefox/1.5.0.3
Народ поясняет
Gecko — это название программного ядра Firefox. На этом ядре также построен его "прародитель" Mozilla (ныне — SeaMonkey).
На очереди — Mozilla. Он в этом смысле мало отличается от своего "потомка" Firefox и выдаст вот что:
Mozilla/<Версия исходного кода ядра>(<Название операционной системы>; U|I; <Версия операционной системы>;<Язык>; <Версия Mozilla>) <Версия программного ядра>
Например:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040616
Что касается "ветерана" Navigator, то вот формат его значения свойства
userAgent:
Mozilla/<Версия исходного кода ядра>(<Название операционной системы>; U|I; <Версия операционной системь>;<Язык>; <Ближайшая версия Mozilla>) <Версия программного ядра>Netscape/<Версия $avigator>
На своем компьютере автор получил вот что:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0rc2) Gecko/20020512Netscape/7.0b1
Народ замечает
Да, со свойствами appVersion и userAgent каши не сваришь... Мало того, что они возвращают довольно сложную строку, которую еще нужно разобрать, так еще и строка эта разная для разных программ Web-обозревателей (и даже для различных режимов работы в случае Opera). Хотя, так ли уж часто нам нужны версия программного ядра или точные сведения о .NET... Да и точная версия Web-обозревателя нужна не так уж и часто.
Пример
Вот простенькая Web-страничка, выводящая язык, поддерживаемый программой Web-обозревателя (русский или английский):
<HTML> <HEAD>
<TITLE>Язык Web-обозревателя</TITLE> </HEAD> <BODY>
<SCRIPT TYFE="text/javascript"> var langName = ""; if (navigator.appName == "Microsoft Internet Explorer")
langName = navigator.browserLanguage else
langName = navigator.language; switch (langName.substring(0, 2)) { case "ru":
langDesc = "русский"; break; case "en":
langDesc = "английский"; break; default:
langDesc = "<He установлена>"; } document.write("<Р>Язык, поддерживаемый вашим Web-обозревателем, -" + langDesc + ".</P>"); </SCRIPT> </BODY> </HTML>
Заметим, что язык проверяется по первым двум символам строки, возвращаемой свойством browserLanguage или language. Это нужно для поддержки Mozilla и Navigator, которые, как мы уже знаем, возвращают пятибуквенный код языка.
Комментарии
Комментариев пока нет.