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