1、经过html判断javascript
<!--[if !IE]><!--> 除IE外均可识别 <!--<![endif]-->css
<!--[if IE]> 全部的IE可识别 <![endif]-->html
<!--[if IE 5.0]> 只有IE5.0能够识别 <![endif]-->java
<!--[if IE 5]> 仅IE5.0与IE5.5能够识别 <![endif]-->chrome
<!--[if gt IE 5.0]> IE5.0以及IE5.0以上版本均可以识别 <![endif]-->windows
<!--[if IE 6]> 仅IE6可识别 <![endif]-->浏览器
<!--[if lt IE 6]> IE6以及IE6如下版本可识别 <![endif]-->less
<!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->ide
<!--[if IE 7]> 仅IE7可识别 <![endif]-->学习
<!--[if lt IE 7]> IE7以及IE7如下版本可识别 <![endif]-->
<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->
<!--[if lte IE 6]>……<![endif]-->
Ite:less than or equal to意思是小于或等于IE6浏览器,用于IE浏览器的条件注释,经常使用于CSShack,针对IE的JS等。 在进行WEB标准网页的学习和应用过程当中,网页对浏览器的兼容性是常常接触到的一个问题。其中因微软公司的Internet Explorer(简称IE)占据浏览器市场的大半江山,此外还有Firefox、Opera等。须要对这些浏览器进行兼容。 同时,单就IE而言,因IE版本的升级更替,目前浏览者使用的主要停留在 IE5(IE5.5)、IE6和IE7这三个版本中。而这3个版本对于咱们制做的WEB标准网页(XHTML+CSS)解释执行的显示情况不尽相同。并 且,其余非IE浏览器与IE对某些CSS解释也不同。因此,经过IE浏览器中的专有条件注释可有针对性的进行相关属性的定义。 条件注释只能用于Explorer 5+ Windows(如下简称IE)(条件注释从IE5开始被支持)。若是你安装了多个IE,条件注释(Conditional comments)将会以最高版本的IE为标准(目前为IE 7)。 条件注释只能在windows Internet Explorer(如下简称IE)下使用,所以咱们能够经过条件注释来为IE添加特别的指令。 通俗点,条件注释就是一些if判断,但这些判断不是在脚本里执行的,而是直接在html代码里执行的,好比:
<!--[if IE]> 这里是正常的html代码 <![endif]-->
1,条件注释的基本结构和HTML的注释(<!-- -->)是同样的。所以IE之外的浏览器将会把它们看做是普通的注释而彻底忽略它们。 2,IE将会根据if条件来判断是否如解析普通的页面内容同样解析条件注释里的内容。 3,条件注释使用的是HTML的注释结构,所以他们只能使用在HTML文件里,而不能在CSS文件中使用。 可以使用以下代码检测当前IE浏览器的版本(注意:在非IE浏览器中是看不到效果的)
<!--[if IE]> <h1>您正在使用IE浏览器</h1> <!--[if IE 5]> <h2>版本 5</h2> <![endif]-->
<!--[if IE 5.0]> <h2>版本 5.0</h2> <![endif]--> <!--[if IE 5.5]> <h2>版本 5.5</h2> <![endif]--> <!--[if IE 6]> <h2>版本 6</h2> <![endif]--> <!--[if IE 7]> <h2>版本 7</h2> <![endif]-->
<![endif]--> 那若是当前的浏览器是IE,但版本比IE5还低,该怎么办呢,可使用<!--[if ls IE 5]>,固然,根据条件注释只能在IE5+的环境之下,因此<!--[if ls IE 5]>根本不会被执行。 lte:就是Less than or equal to的简写,也就是小于或等于的意思。 lt :就是Less than的简写,也就是小于的意思。 gte:就是Greater than or equal to的简写,也就是大于或等于的意思。 gt :就是Greater than的简写,也就是大于的意思。 ! :就是不等于的意思,跟javascript里的不等于判断符相同 Conditional comments属于CSS hack? 条件判断属于CSS hack吗? 严格地说是属于CSS hack。由于就好象其余真正的css hack同样,它使得咱们能够给一些浏览器赋予特殊的样式,再则它不依赖于某个浏览器的BUG来控制另一个浏览器(的样式)。除此以外,条件判断还能用 来作一些超出CSS HACK范围的事情(虽然这种状况不多发生)。 由于条件判断不依赖于某个浏览器的hack,而是一个通过深思熟虑的特点功能,因此我相信它是能够被放心地使用的。固然,其余浏览器也有可能支持条件判断(到目前为止尚未),可是看起来,他们应该不会使用如<!--[if IE]>这样的语法。 应该如何应用条件注释 本文一开始就说明了,由于IE各版本的浏览器对咱们制做的WEB标准的页面解释不同,具体就是对CSS的解释不一样,咱们为了兼容这些,可运用条件注释来各自定义,最终达到兼容的目的。好比:
<!-- 默认先调用css.css样式表 -->
<link rel="stylesheet" type="text/css" href="css.css" /> <!--[if IE 7]> <!-- 若是IE浏览器版是7,调用ie7.css样式表 --> <link rel="stylesheet" type="text/css" href="ie7.css" /> <![endif]--> <!--[if lte IE 6]> <!-- 若是IE浏览器版本小于等于6,调用ie.css样式表 --> <link rel="stylesheet" type="text/css" href="ie.css" /> <![endif]-->
这其中就区分了IE7和IE6向下的浏览器对CSS的执行,达到兼容的目的。同时,首行默认的css.css还能与其余非IE浏览器实现兼容。 注意:默认的CSS样式应该位于HTML文档的首行,进行条件注释判断的全部内容必须位于该默认样式以后。 好比以下代码,在IE浏览器下执行显示为红色,而在非IE浏览器下显示为黑色。若是把条件注释判断放在首行,则不能实现。该例题很能说明网页对IE浏览器和非IE浏览器间的兼容性问题解决。
<style type="text/css"> body{ background-color: #000; } </style>
<!--[if IE]> <style type="text/css"> body{ background-color: #F00; } </style> <![endif]-->
同时,有人会试图使用<!--[if !IE]>来定义非IE浏览器下的情况,但注意:条件注释只有在IE浏览器下才能执行,这个代码在非IE浏览下非单不是执行该条件下的定义,而是当作注释视而不见。 正常就是默认的样式,对IE浏览器须要特殊处理的,才进行条件注释。 在HTML文件里,而不能在CSS文件中使用。
2、js判断 /*
//判断当前浏览类型
function BrowserType()
{
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器
var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
var isSafari = userAgent.indexOf("Safari") > -1 && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
var isChrome = userAgent.indexOf("Chrome") > -1 && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器
if (isIE) { var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); reIE.test(userAgent); var fIEVersion = parseFloat(RegExp["$1"]); if(fIEVersion == 7) { return "IE7";} else if(fIEVersion == 8) { return "IE8";} else if(fIEVersion == 9) { return "IE9";} else if(fIEVersion == 10) { return "IE10";} else if(fIEVersion == 11) { return "IE11";} else { return "0"}//IE版本太低 }//isIE end if (isFF) { return "FF";} if (isOpera) { return "Opera";} if (isSafari) { return "Safari";} if (isChrome) { return "Chrome";} if (isEdge) { return "Edge";}
}//myBrowser() end
//判断是不是IE浏览器
function isIE()
{
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
if(isIE)
{
return "1";
}
else
{
return "-1";
}
}
//判断是不是IE浏览器,包括Edge浏览器
function IEVersion()
{
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
var isEdge = userAgent.indexOf("Windows NT 6.1; Trident/7.0;") > -1 && !isIE; //判断是否IE的Edge浏览器
if(isIE)
{
var reIE = new RegExp("MSIE (\d+\.\d+);");
reIE.test(userAgent);
var fIEVersion = parseFloat(RegExp["$1"]);
if(fIEVersion == 7)
{ return "IE7";}
else if(fIEVersion == 8)
{ return "IE8";}
else if(fIEVersion == 9)
{ return "IE9";}
else if(fIEVersion == 10)
{ return "IE10";}
else if(fIEVersion == 11)
{ return "IE11";}
else
{ return "0"}//IE版本太低
}
else if(isEdge)
{
return "Edge";
}
else
{
return "-1";//非IE
}
}
最后写一下兼容ie 高版本的设置 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">