parser

Определение броузера/платформы посетителя

Misha v.3 [18 октября 2005]

Иногда требуется выполнять какие-либо действия, различные для разных броузеров. В этом случае требуется определить, каким броузером и с какой платформы пришел посетитель.

Самый простой способ сделать это — проанализировать значение переменной окружения $env:HTTP_USER_AGENT.

Класс detect имеет два статических метода (os и agent), которые анализируют переданную им строку с HTTP_USER_AGENT и возвращают хеши, в которых содержится информация о броузере или платформе.

Пример использования класса detect:

@main[]
^use[Detect.p]

$hPlatform[^Detect:os[$env:HTTP_USER_AGENT]]
$hBrowser[^Detect:agent[$env:HTTP_USER_AGENT]]

OS: $hPlatform.name<br />
Browser: $hBrowser.name ${hBrowser.ver}.${hBrowser.subver}
Скачать класс:

Detect.zip (29.03.2007  570 байт)
Архив файла с классом Detect

Древний оператор implode, который в сущности делает тоже самое, только сбоку. При вызове он записывает в глобальные переменные $MAIN:browser, $MAIN:browser_ver, $MAIN:browser_subver и $MAIN:platform информацию о броузере и платформе посетителя, откуда её потом можно достать.

Пример использования оператора implode:

@main[]
^use[implode.p]

^detectBrowser[]

OS: $MAIN:platform<br />
Browser: $MAIN:browser ${MAIN:browser_ver}.${MAIN:browser_subver}
Скачать:

implode.zip (03.12.2002  480 байт)
Архив файла с оператором implode

Следует заметить, что следует стараться всячески избегать использования этих методов и выдавать одинаковый и универсальный html для всех броузеров, а подобные проверки осуществлять на стороне броузера средствами javascript.