Javascript 检测浏览器类型并应用相关样式

Javascript 检测浏览器类型并应用相关样式,javascript,php,mysql,css,Javascript,Php,Mysql,Css,我已经为我的公司构建了一个“内部”web应用程序,主要使用PHP/MySQL,该应用程序在我公司的一些部门中使用 我设计了这个网站(我觉得很幼稚),这样使用Chrome和Firefox就可以很好地工作,看起来也不错。直到最近,这还不是一个问题,因为每个使用它的人都在使用那些浏览器 但是,用户列表中增加了一个新部门,他们都使用旧版本的IE,并且没有在自己的机器上升级或安装任何软件的权限。我发现了一两个问题,但结果不多 我希望能够检测到某人正在使用的浏览器,并相应地应用特定的样式 我并不擅长Java

我已经为我的公司构建了一个“内部”web应用程序,主要使用PHP/MySQL,该应用程序在我公司的一些部门中使用

我设计了这个网站(我觉得很幼稚),这样使用Chrome和Firefox就可以很好地工作,看起来也不错。直到最近,这还不是一个问题,因为每个使用它的人都在使用那些浏览器

但是,用户列表中增加了一个新部门,他们都使用旧版本的IE,并且没有在自己的机器上升级或安装任何软件的权限。我发现了一两个问题,但结果不多

我希望能够检测到某人正在使用的浏览器,并相应地应用特定的样式


我并不擅长JavaScript,但我想这就是它的工作方式吧?但是怎么做呢?

您可能正在寻找类似于:

    var navigator = function (){
        var ua= navigator.userAgent, tem, 
        M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*([\d\.]+)/i) || [];
        if(/trident/i.test(M[1])){
            tem=  /\brv[ :]+(\d+(\.\d+)?)/g.exec(ua) || [];
            return 'IE '+(tem[1] || '');
        }
        M= M[2]? [M[1], M[2]]:[navigator.appName, navigator.appVersion, '-?'];
        if((tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
        return M.join(' ');
    };
//usage
//IE < 10
        if(navigator()[0] == "I" && navigator().match(/\d+/) < 10){
            alert('You are using '+navigator+'.Please update to version >= 10');
        }
var navigator=函数(){
var ua=navigator.userAgent,tem,
M=ua.match(/(opera | chrome | safari | firefox | msie | trident(?=\/)\/?\s*([\d\.]+)/i)|;
if(/trident/i.test(M[1])){
tem=/\brv[:]+(\d+(\.\d+))/g.exec(ua)| |[];
返回'IE'+(tem[1]| |');
}
M=M[2]?[M[1],M[2]]:[navigator.appName,navigator.appVersion',-?';
如果((tem=ua.match(/version\/([\.\d]+)/i))!=null)M[2]=tem[1];
返回M.join(“”);
};
//用法
//IE<10
如果(navigator()[0]=“I”&&navigator().match(/\d+/)<10){
警报(“您正在使用“+navigator+”。请更新到版本>=10”);
}

您可以强制IE加载兼容模式。希望是您正在寻找的IE 8版本。 使用以下选项:

<meta http-equiv="X-UA-Compatible" content="IE=8">


试试这个。您可以根据需要更改版本。

将其放入
标题中

<!--[if IE]>
    <link rel="stylesheet" type="text/css" href="all-ie-only.css" />
<![endif]-->

详情如下:

或者使用自定义版本的Modernizer进行功能检测,而不是浏览器检测:


您可以在html中检查用户是否正在使用IE

<!--[if IE]>
Place styles here for IE (so all your scripts and links to stylesheets and scripts)
<![endif]-->

要恢复到其他样式,请执行以下操作:

<!--[if !IE]>
Place styles here for not IE (so all your scripts and links to stylesheets and scripts that you were using before)
<![endif]-->

您需要在同一文档中包含这两种样式,以确保样式不会相互冲突


正如其他人所提到的,您最好使用两种不同的风格元素,一种用于IE,另一种用于非IE:

<!--[if IE 8]>
  <link rel="stylesheet" type="text/css" href="./css/blahblah-ie8.css"/>
<![endif]-->

<!--[if !IE 8]>
    <link rel="stylesheet" type="text/css" href="./css/blahblah.css"/>
<![endif]-->

您可以针对IE的单个版本或所有版本


这不是一个坏问题,我也曾在一个具有类似需求的内部应用程序上工作过,因为web应用程序在IE8上的行为/外观略有不同,这是公司的要求。我会把我的答案贴在下面的答案里。