Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > TypoScript практикум

Ответ
 
Опции темы Опции просмотра
Старый 02.06.2008, 01:09   #1
void
Senior Member
 
Аватар для void
 
Регистрация: 14.03.2006
Адрес: Russia, Penza
Сообщений: 1,504
Отправить сообщение для void с помощью ICQ
По умолчанию

Как нам говорит исходный кот,
PHP код:
    function browserInfo($useragent)    {
        foreach(
$this->hookObjectsArr as $hookObj)    {
            if (
method_exists($hookObj'browserInfo')) {
                
$result $hookObj->browserInfo($useragent);
                if (
strlen($result)) {
                    return 
$result;
                }
            }
        }

        
$useragent trim($useragent);
        
$browserInfo=Array();
        
$browserInfo['useragent']=$useragent;
        if (
$useragent)    {
            
// browser
            
if (strstr($useragent,'MSIE'))    {
                
$browserInfo['browser']='msie';
            } elseif(
strstr($useragent,'Konqueror'))    {
                
$browserInfo['browser']='konqueror';
            } elseif(
strstr($useragent,'Opera'))    {
                
$browserInfo['browser']='opera';
            } elseif(
strstr($useragent,'Lynx'))    {
                
$browserInfo['browser']='lynx';
            } elseif(
strstr($useragent,'PHP'))    {
                
$browserInfo['browser']='php';
            } elseif(
strstr($useragent,'AvantGo'))    {
                
$browserInfo['browser']='avantgo';
            } elseif(
strstr($useragent,'WebCapture'))    {
                
$browserInfo['browser']='acrobat';
            } elseif(
strstr($useragent,'IBrowse'))    {
                
$browserInfo['browser']='ibrowse';
            } elseif(
strstr($useragent,'Teleport'))    {
                
$browserInfo['browser']='teleport';
            } elseif(
strstr($useragent,'Mozilla'))    {
                
$browserInfo['browser']='netscape';
            } else {
                
$browserInfo['browser']='unknown';
            }
            
// version
            
switch($browserInfo['browser'])    {
                case 
'netscape':
                    
$browserInfo['version'] = $this->browserInfo_version(substr($useragent,8));
                    if (
strstr($useragent,'Netscape6')) {$browserInfo['version']=6;}
                break;
                case 
'msie':
                    
$tmp strstr($useragent,'MSIE');
                    
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,4));
                break;
                case 
'opera':
                    
$tmp strstr($useragent,'Opera');
                    
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,5));
                break;
                case 
'lynx':
                    
$tmp strstr($useragent,'Lynx/');
                    
$browserInfo['version'] = $this->browserInfo_version(substr($tmp,5));
                break; 
в нём проверка на наличие в useragent строки MSIE стоит раньше, чем Opera, и, видимо, до этого case просто не доходит выполнение кода.
Стало быть, можно написать патч и послать его в core team, а можно воспользоваться любезно предоставленным Hook и написать мааленький экстеншен, и возвращать в нём значение только для оперы.
__________________
TYPO3 FAQ
void вне форума   Ответить с цитированием
Старый 02.06.2008, 01:24   #2
-=UncleByte=-
Senior Member
 
Регистрация: 14.04.2006
Сообщений: 1,159
Отправить сообщение для -=UncleByte=- с помощью ICQ Отправить сообщение для -=UncleByte=- с помощью Skype™
По умолчанию

Спасибо за разъяснения, Алексей. Наверное действительно нужно написать патч, поскольку Opera, в отличие от IE6, не нуждается в специальных css-трюках и нормально воспринимает xml пролог, а сделать для нормального браузера чистый и валидный вывод это хорошо и правильно.
К сожалению лично я врядли смогу написать патч или экстеншн в силу того, что я не программист, а дизайнер, хотя что-то простое и могу сделать при помощи php.
Поэтому остается надеятся на помощь сообщества.
-=UncleByte=- вне форума   Ответить с цитированием
Старый 02.06.2008, 02:10   #3
pomotom
Senior Member
 
Регистрация: 09.12.2007
Сообщений: 281
По умолчанию

хочу только отметить, что с точки зрения w3c валидатора отсутствие xml пролога ошибкой не является.
pomotom вне форума   Ответить с цитированием
Старый 02.06.2008, 02:30   #4
-=UncleByte=-
Senior Member
 
Регистрация: 14.04.2006
Сообщений: 1,159
Отправить сообщение для -=UncleByte=- с помощью ICQ Отправить сообщение для -=UncleByte=- с помощью Skype™
По умолчанию

Цитата:
Сообщение от pomotom Посмотреть сообщение
хочу только отметить, что с точки зрения w3c валидатора отсутствие xml пролога ошибкой не является.
Это я знаю и от пролога вполне можно отказаться, но вот в деле разделения css для нормальных браузеров и IE6 хотелось бы использовать возможности Typo3. Конечно, есть conditional comments, которые работают прекрасно, но если есть возможность не засорять код всякими "хитростями", думаю, ее можно и нужно использовать.
-=UncleByte=- вне форума   Ответить с цитированием
Старый 02.06.2008, 02:58   #5
pomotom
Senior Member
 
Регистрация: 09.12.2007
Сообщений: 281
По умолчанию

Это понятно. Подводные камни правда тоже есть - невозможность использовать статическое кеширование.
pomotom вне форума   Ответить с цитированием
Старый 02.06.2008, 03:03   #6
-=UncleByte=-
Senior Member
 
Регистрация: 14.04.2006
Сообщений: 1,159
Отправить сообщение для -=UncleByte=- с помощью ICQ Отправить сообщение для -=UncleByte=- с помощью Skype™
По умолчанию

Цитата:
Сообщение от pomotom Посмотреть сообщение
Это понятно. Подводные камни правда тоже есть - невозможность использовать статическое кеширование.
То есть для кеширования лучше не фильтровать браузеры на уровне Typo3?
-=UncleByte=- вне форума   Ответить с цитированием
Старый 02.06.2008, 08:15   #7
pomotom
Senior Member
 
Регистрация: 09.12.2007
Сообщений: 281
По умолчанию

Только при использовании кеширования в статику. Еще один возможный источник неприятностей - кеширующие прокси по дороге.
ИМХО, только добавит сложностей. Сonditional comments надежнее.
pomotom вне форума   Ответить с цитированием
Ответ

Теги
conditions, opera

Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
opera кеширует FE demav Общие вопросы 0 07.04.2008 14:10
Вопрос по sr_language_menu Tod Общие вопросы 14 10.08.2007 19:29
Как работать с Typo3 в Opera? Boni-M Общие вопросы 9 07.06.2007 04:53
Поддержка Opera 9.x в TYPO3 4.1 Pavel Antonov Новости TYPO3-разработки 0 28.02.2007 16:29
Неудобства работы в IE и Opera GF Общие вопросы 3 16.01.2006 12:21


Часовой пояс GMT +4, время: 23:08.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория