I live ExBB and CMS Limbo! » Форумы и сайты » Записная книжка PHP » Определение версии браузера.

Страниц (1): [1]
 

1. NordWest - 14 мая 2013 — 10:33 - перейти к сообщению
Определение через ява-скрипт (на стороне клиента)
code:
<HTML>
<HEAD>
<TITLE> Определение версии браузера</TITLE>
<SCRIPT language=JavaScript>
function check_browser() {
var version = 0;
if (navigator.userAgent.indexOf ("MSIE 5") != -1)
document.write ("Internet Explorer 5.0");
else if (navigator.userAgent.indexOf("MSIE 4") != -1)
document.write ("Internet Explorer 3.0!");
else if (navigator.userAgent.indexOf ("MSIE 4.5") != -1)
document.write ("Microsoft Internet Explorer 4.5 for Macintosh");
else if (navigator.userAgent.indexOf ("Opera") != -1)
document.write("Opera");
else if (navigator.userAgent.indexOf ("Mozilla/5.0") != -1)
document.write ("Navigator 5 или выше (в т.ч. 6.2+)");
else if (navigator.userAgent.indexOf ("Mozilla/4.7") != -1)
document.write ("Navigator 4.7");
else if ………
else version = 8;
return true;
}
// -->
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT language=JavaScript>
document.write("Вы используете браузер: ");
check_browser();
</SCRIPT>
</BODY>
</HTML>



Определение через PHP (на стороне сервера)

code:
<?php
if (strpos($HTTP_USER_AGENT,"Opera") !==false)
{
$ua="Opera";
$uaVers = substr($HTTP_USER_AGENT,strpos($HTTP_USER_AGENT,"Opera")+6,4);
}
elseif (strpos($HTTP_USER_AGENT,"Gecko") !==false)
{
$ua="Netscape";
$uaVers = substr($HTTP_USER_AGENT,strpos($HTTP_USER_AGENT,"Mozilla")+8,3);
}
elseif (strpos($HTTP_USER_AGENT,"Windows") !==false)
{
$ua="Explorer";
$uaVers = substr($HTTP_USER_AGENT,strpos($HTTP_USER_AGENT,"MSIE")+5,3);
}
else
{
$ua=$HTTP_USER_AGENT;
$uaVers="";
}
?>


Файл с определением браузера с помощью PHP должен иметь расширение из числа обрабатываемых PHP-парсером или из числа обрабатываемых SSI-парсером и включать PHP-скрипт SSI-директивой

code:
<!--#include virtual="agent.php" -->


Для браузеров с отключенным JavaScript может оказаться полезным включение в страницу таких строк:
code:
<SCRIPT LANGUAGE="JavaScript"><!--
document.write('<' + '!--');
//-->
</SCRIPT>
<p style="color:red">Если вы хотите, чтобы сайт выглядел нормально, включите JavaScript!
Для броузера Internet Explorer и Windows XP с сервис-паком 2, щелкните по панели безопасности правой кнопкой мыши, и в ее контекстном меню выберите пункт "Разрешить заблокированное содержимое..."
<SCRIPT LANGUAGE="JavaScript"><!--
document.write('--' + '>');
//-->
</SCRIPT>

Если скрипт не поддерживается, в тексте отобразится предупредительная строка. Если поддерживается, запущенные перед и после предупредительной строки скрипты ее закоментируют.
2. NordWest - 14 мая 2013 — 11:55 - перейти к сообщению
Как сделать для каждого браузера свой стиль CSS на JavaScript ?

Проще всего определить нужный браузер с помощью JavaScript, после чего загрузить для него требуемый файл со стилями. Этот способ хорош еще тем, что позволяет узнать версию браузера, а не просто его название. Сам стилевой файл подключается через метод document.write, который в данном случае будет использоваться так:
code:
document.write("<link rel='stylesheet' href='style.css' type='text/css'>")


В общем случае определение браузера и ссылка на файл CSS для него происходит, как показано ниже.
code:
<html>
<head>
<script language="JavaScript">
Netscape4 = document.layer;
Netscape6 = Mozilla = (navigator.appName == "Netscape") && DOM;
Netscape7 = navigator.userAgent.indexOf("Netscape/7") >= 0;
Opera5 = window.opera && DOM;
Opera6 = Opera5 && window.print;
Opera7 = Opera5 && navigator.userAgent.indexOf("Opera 7") >= 0;
IE = document.all && !Opera5;
Firefox = navigator.userAgent.indexOf("Firefox") >= 0;

if(IE) document.write("<link rel='stylesheet' href='/ie.css' type='text/css'>");
else document.write("<link rel='stylesheet' href='/style.css' type='text/css'>");

</script>
</head>
<body>

...
</body>
</html>


Этот пример работает так: первый стиль для всех, кроме мозилы.

code:

<html>
<head>
<script language="JavaScript">
Firefox = navigator.userAgent.indexOf("Firefox") >= 0;

if(Firefox) document.write("<link rel='stylesheet' href='/firefox.css' type='text/css'>");
else document.write("<link rel='stylesheet' href='/style.css' type='text/css'>");

</script>
</head>
<body>

...
</body>
</html>


Не стоит считать, что придется писать отдельные стили для всех браузеров. Например, Netscape (версии 6 и старше), Mozilla и Firefox основаны на одном ядре под названием Gecko, поэтому работают c сайтами примерно одинаково. В какой-то мере по своему подходу близки браузеры Internet Explorer 6 и Opera 7, и в большинстве случаев они отображают результат в равной мере правильно. Получается, что обычно требуется создать всего два разных стиля, предназначенных для браузеров, принадлежавших к разным <лагерям>.

Powered by ExBB v1.1.180311