23

2008.5

现在的浏览器有很多种,每种又有不同的版本,为了让网页在不同的浏览器的呈现出相同的样式,页面制做人员便使用大量的偏方(即hack,我把它叫做偏方)。做这种事情是很痛苦的,做过的人都知道。于是有些人分别针对不同的浏览器编写相对应的CSS文件,然后用IE条件注释方式来判断载入,代码如下:

<link href="common.css" type="text/css" media="screen, projection" />
<!--[if IE 7]><link href="ie7.css" type="text/css" media="screen, projection" />
< ![endif]--><!--[if IE 6]><link href="ie6.css" type="text/css" media="screen, projection" />
< ![endif]-->

其实也可以用后台动态语言来判断浏览器种类的。在PHP中可以使用函数“$_SERVER['HTTP_USER_AGENT']”,它和JS中的“navigator.userAgent”函数具有相似的功能,而且我在PHP官网上找到一篇介绍介绍get_browser函数的文章,在里面找到了不少判断浏览器种类的代码,现转一个在这里:

<?php
//        _______
// ----- | CONF. |
// add new browsers in lower case here, separated
// by spaces -  order is important: from left to
// right browser family becomes more precise
$browsers = "mozilla msie gecko firefox ";
$browsers.= "konqueror safari netscape navigator ";
$browsers.= "opera mosaic lynx amaya omniweb";
//        _______
// ----- |PROCESS|
$browsers = split(" ", $browsers);
$nua = strToLower( $_SERVER['HTTP_USER_AGENT']);
$l = strlen($nua);
for ($i=0; $i<count($browsers); $i++){
  $browser = $browsers[$i];
  $n = stristr($nua, $browser);
  if(strlen($n)>0){
    $GLOBALS["ver"] = "";
    $GLOBALS["nav"] = $browser;
    $j=strpos($nua, $GLOBALS["nav"])+$n+strlen($GLOBALS["nav"])+1;
    for (; $j<=$l; $j++){
      $s = substr ($nua, $j, 1);
      if(is_numeric($GLOBALS["ver"].$s) )
      $GLOBALS["ver"] .= $s;
      else
      break;
    }
  }
}
//        _______
// ----- |  USE  |
echo("<pre>Your browser is: ");
echo($GLOBALS["nav"] . " " . $GLOBALS["ver"] . "</pre>");
?>

如果你用的是IE6,页面会显示:Your browser is: msie 6.0;如果用的是火狐2,会显示:Your browser is: firefox 2.0。

| |
0 Response
发表评论
  • 昵称 [注册]
  • 密码 游客无需密码
  • 网址
  • 电邮
打开HTML 打开UBB 打开表情 隐藏 记住我