Меня уже спрашивали, как сделать, чтобы на сайте отображался баннер «Загрузи нормальный браузер» только для пользователей Internet Explorer.
На самом деле все очень просто. Для этого я написал функцию maxsite_testIE().
function maxsite_testIE() { $user_agent = $_SERVER['HTTP_USER_AGENT']; $browserIE = false; if ( stristr($user_agent, 'MSIE 7.0') ) $browserIE = true; // IE7 if ( stristr($user_agent, 'MSIE 6.0') ) $browserIE = true; // IE6 if ( stristr($user_agent, 'MSIE 5.0') ) $browserIE = true; // IE5 return $browserIE; }
Эту функцию нужно прописать в любом месте, например в index.php.
После этого, в том месте, где вы хотите показать текст с призывом пользоваться FireFox (или Opera), пишем:
<?php if ( maxsite_testIE() ) { echo '<a href="http://www.mozilla-europe.org/ru/products/firefox/"> Не ущемляй себя!<br /> Установи нормальный браузер!</a>'; } ?>
Текст и оформление делайте уже по своему вкусу.
Для экстремалов могу предложить вместо вывода текста, сделать редирект на сайт FireFox. ;) Я правда не уверен, что ваши посетители это оценят, зато фанаты FireFox будут в восторге:
<?php if ( maxsite_testIE() ) { header("Location: http://www.mozilla-europe.org/ru/products/firefox/"); exit; } ?>
Гулять, так гулять! :)
Комментариев: 28 RSS
1Ильдар Абдулин25-04-2007 07:08
А зачем извращаться?
Тем более ваша функция показывает баннер тем, у кого в браузерах стоит идентификация "а-ля ИЕ" (например, в старых версиях Оперы эта опция даже стояла по умолчанию)
Conditional comments прекрасно справляются с задачей
Это отобразится только в ослике ИА
(лишние пробелы удалить)
2Ильдар Абдулин25-04-2007 07:10
блин, все равно порезался код...
можно погуглить, инфы про Conditional comments выше крыши
3Максим25-04-2007 07:22
Приведите-ка пример редиректа с помощью Conditional comments? ;)
4Ильдар Абдулин25-04-2007 13:49
в данном случае вопрос стоял не о редиректе, а о показе баннера для пользователей ИЕ
5Максим25-04-2007 14:56
Ну тогда приведите пример кода (хака), который покажет пользователям IE вышеприведенный текст со ссылкой на сайт FireFox. ;)
6s3m25-04-2007 15:47
помню был такой плагин, который не пускал на блог пользователей IE )) жосткий плагин, но между прочим идеи для него у меня были ))
7Ильдар Абдулин25-04-2007 17:17
2Максим:
читайте http://www.quirksmode.org/css/condcom.html
<!--[if IE]>
According to the conditional comment this is Internet Explorer<br />
<![endif]-->
8Ильдар Абдулин25-04-2007 17:21
код в комментах все равно режется
идите по ссылке в предыдушем сообщении - там прекрасно разжевано и с примерами
9Максим25-04-2007 18:00
Должны наверное знать, что для публикации html-кода нужно его преобразовывать в спецсимволы. Теперь по сути. Сию конструкцию понимает только IE, для других же браузеров это довольно жестокое издевательство над DOM. Кроме этого, в IE полно всяческих глюков, которые тоже можно считать "идентификацией" IE :razz:
10Ильдар Абдулин26-04-2007 07:33
комментарии - не издевательство над dom
а именно как комментарии и воспринимают другие браузеры conditional comments
и только IE их и понимает, что собственно и было нужно
отличие СС от прочих css-хаков в том, что они поддерживаются и, скорее всего, будут поддерживаться всеми версиями ie и как раз-таки не причиняют ни малейшего вреда при использовании в других браузерах
короче, Максим, вы не в теме
обсуждение закрыто
о преобразовании в спецсимволы - не знал, теперь буду
11Максим26-04-2007 09:01
Да, действительно, проверил: FireFox и Opera воспринимают этот код как комментарий. Может быть для небольших вставок он и годится. Для более серьезного кода я бы его не использовал, поскольку он всегда присутствует в html-странице, даже если и не отображается в нормальных браузерах. Мой способ куда более избирателен, поскольку добавляет код в страницу только для пользователей IE. Для пользователей других браузеров он вообще не генерируется и страница не содержит мусора специально для IE.
12Vsn26-04-2007 19:47
А про IE7 забыли :) Кстати, вот тут подумал, а может ли быть такое, что MSIE 6.0 будет не ровно, а скажем MSIE 6.5, такое вообще бывает? И еще хотелось, чтобы код работал не только для ИЕ, но и для оперы тож, так то оперу тож втопку, надо юзать файрфокс!
13Максим26-04-2007 21:02
Насчет дробной версии я не могу ничего сказать. Наверное тогда можно вместо 'MSIE 6.0' указать просто 'MSIE'.
Таким же образом делается определение для Оперы 'Opera' и FireFox'а - 'Firefox'. Любители IE, кстати, могут переправлять пользователей неIE, например на сайт M$ :smile:
ps Практическое применение определения браузера (для переключения css-стилей) см. в 9-м выпуске рассылки.
14Турист28-04-2007 16:26
будущее за фф
15Vedmak28-04-2007 23:10
Зачем изобретать велосипед, когда Conditional Comments работает годы и это официальный способ от Microsoft для опознания любой весрии Internet Explorer, начиная с 5.0. К тому же СС можно применять на любом типе страниц, а не только php.
16Кошка30-04-2007 19:58
Не понимаю такого фанатизма, я вот тоже пользуюсь FireFox, но он не панацея - когда, например нужно с вэбманями поработать через браузер - ничего кроме IE не получится использовать (можно полуторный FF, но после "издевательства" над ним при помощи плагина).
К тому же, мальчики, зачем навязывать свое мнение? Я вот пишу это сообщение с SONY VAIO PCG-4H2P, но я же не гноблю пользующих Rover'ы - личное дело каждого, что использовать.
Лучше бы написали плагин который определяет наличие Flash нужной версии и если флэш есть - выводится ролик, а если нет - картинка (скажем для шапки блога).:wink:
17simpson01-05-2007 01:23
такое решение, оформленное в Javascript, существует уже довольно давно. SWFObject называется.
18Delchyve21-05-2007 15:51
Максим, уже ИЕ 7-ой появился. Так что, думаю, будет уместно добавиь еще строчку :)
if ( stristr($user_agent, 'MSIE 7.0') ) $browserIE = true;
19simpson21-05-2007 21:03
может, лучше, наоборот, сократить искомую подстроку до "msie"? :)
20Delchyve22-05-2007 07:38
А с этого места можно поподробнее?
21simpson22-05-2007 10:34
if ( stristr($user_agent, 'msie') ) $browserIE = true;
22Maximark21-06-2007 09:50
Так определять браузер очень "просто"... OPERA может представиться как MSIE... поэтому надо чуть усложнить проверку
например чтобы убрать баг мерцания MSIE 6 document.execCommand("BackgroundImageCache", false, true);
в опере js потом будет работать некорректно... мягко сказать, поэтому вот код более точного определения:
23Cvetik15-10-2007 08:53
Понятного мало
24Ieronimus02-06-2008 21:22
Вроде бы сработало так: MSIE 5 (или 6, 7) просто первая цифра, которая должна быть определяющей для всех IE соответствующей версии.
25Alexpts02-01-2009 13:58
У Nox`а есть такй проект - http://nomsie.ru/
26Александр16-02-2009 13:22
Спасибочки )
27Дмитрий14-08-2011 19:05
Сделал Ушку себе, чтоб в сайдбаре появлялось сообщение с просьбой скачать другой браузер. И ссылки на загрузку) спасибо Макс)
28Приятный Собеседник16-09-2011 13:58
Для определения IE6 я использую такой сопсоб:
http://www.easy2code.com/ru/notes/view/opredelenie_ie6