|
|
|
| Привет всем.
Подскажите кто знает как при загрузке страницы определить браузер пользователя, и в соответствии подключить нужный файл стилей.
Скажем для Оперы – St_op.css , а для Мазилы - St_mz.css | |
|
|
|
|
|
|
|
для: User_PHP
(19.09.2009 в 14:07)
| | Можно, конечно, ориентироваться на пользовательский агент user_agent, однако, это не надежный способ определения браузера, так как он может быть изменен. Особенно этим грешит Opera, которая не только позволяет пользователю изменять его как угодно, но и в некоторых версиях маскируется под Internet Explorer. Самый надежный способ - это верстать страницы таким образом, чтобы они не зависили от браузера.
PS А вообще можно проанализовать содержимое navigator.appName и navigator.userAgent в JavaScript и в зависимости от их состояния подключить ту или иную таблицу стилей. | |
|
|
|
|
|
|
|
для: cheops
(19.09.2009 в 14:13)
| | Вы не правы - userAgent НЕ МОЖЕТ БЫТЬ изменен. | |
|
|
|
|
|
|
|
для: АЯ
(19.09.2009 в 14:32)
| | Может, ваша текущая версия это не позволяет делать, тем не менее такие версии Opera существовали. В любом случае фраза
>Вы не правы - userAgent НЕ МОЖЕТ БЫТЬ изменен.
слишком сильна. userAgent меняется очень просто (в силу своей клиентской природы), при помощи того же PHP-скрипта, не говоря о том, что эти строки хранятся в реестре ([HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]) который позволяет превращать IE в Opera или FireFox. С остальными браузерами ситуация аналогичная, Opera одно время даже интерфейс предоставляла для изменения этой позиции - сейчас действительно что-то не могу найти.
PS Дело в том, что эта строка заполняется из соответствующего HTTP-заголовка, который передает клиент - он может передать в нем что угодно. Например, многие FireWall-ы просто передают информацию о том, что такой-то FireWall скрыл пользовательский агент. | |
|
|
|
|
|
|
|
для: cheops
(19.09.2009 в 14:59)
| | >Opera одно время даже интерфейс предоставляла для изменения этой позиции - сейчас действительно что-то не могу найти.
Наберите в адресной строке about:config, там найдёте UserAgent.
Который якобы можно изменить (имеется общий Help)
Однако, как бы вы не меняли, указание о том, что это - OPERA, в строке userAgent остаётся. | |
|
|
|
|
|
|
|
для: АЯ
(19.09.2009 в 15:50)
| | >Однако, как бы вы не меняли, указание о том, что это - OPERA, в строке userAgent остаётся.
Да, останется, такова текущая реализация (в случае Opera) , это если я не буду пользоваться плагинами. Да вероятно, в случае JavaScript подделать пользовательский агент будет потруднее. Но если задаться этой целью, то возможно и это. Другое дело, что этот подход в принципе ущербен - выходят новые браузеры и их версии, а этот подход требует сопровождения нескольких версий сайта. Потом появляется соблазн использовать пользовательский агент в серверных скриптах и вот тут начинают происходить сбои, так как его зачастую отсекают FireWall-ы.
Я понимаю, зачем определять различия в случае реализации той или иной конструкции JavaScript, но в случае разметки, не думаю, что это удачная мысль, даже если имеются надежные способы идентификации браузеров. | |
|
|
|
|
 20.8 Кб |
|
|
для: АЯ
(19.09.2009 в 15:50)
| | Возбудили вы меня :))) добился я таки, чтобы Opera была удалена из UserAgent (во вложении Opera прикинулась FireFox-ом). Во-первых имеются разделы 4 и 5, где явно можно указать, чтобы значение Oper не указывалось, во-вторых имеется раздел Special, где происходит прямая манипуляция значениями, возвращаемыми AppName и названием браузера. Поэтому при желании можно сделать что угодно, а редактируя OperaDef6.ini это можно делать и сторонними программами.
PS Это не удивительно - UserAgent всегда был очень легко меняемым и ненадежным параметром. Ситуацию спасает только то, что в массе своей пользователям до него нет дела и никто его не меняет. | |
|
|
|
|
|
|
|
для: cheops
(19.09.2009 в 14:13)
| | >Самый надежный способ - это верстать страницы таким образом, чтобы они не зависили от браузера.
Может подскажите хароший FAQ по этому вопросу. Ато я скачал две книги но там о совместимости особо ничего нет.!!! | |
|
|
|
|
|
|
|
для: User_PHP
(19.09.2009 в 15:27)
| | По сути более или менее совместимые вещи можно сделать придерживаясь двух правил:
1. Использовать CSS 2.0
2. Явно указывать <!DOCTYPE, выводя браузеры из состояния обратной совместимости со старыми правилами (напичканных ошибками). Хорошо, если сразу будете ориентироваться на XHTML.
PS Все остальное - трюки, время жизни которых будет ограниченным. Это не значит, что их не нужно изучать, но в долгосрочной перспективе следует ориентироваться на указанные выше два подхода. | |
|
|
|