判断是否是IE(包含IE11)

本文提供了一段代码,用于判断浏览器类型,包括IE、Firefox、Chrome等主流浏览器。通过检测浏览器的特定属性,实现浏览器类型的快速识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 判断是否是IE(包含IE11)

 if(!!window["ActiveXObject"] || "ActiveXObject" in window)
  {
       alert("ie");
   }else
   {
      alert("不是ie");
   }




//——————————————————————————————————————————————————————————————————————————//
$(function(){
    varSys={};
   var ua= navigator.userAgent.toLowerCase();
    var s;
   (s= ua.match(/rv:([\d.]+)\) like gecko/))?Sys.ie= s[1]:
    (s= ua.match(/msie ([\d.]+)/))?Sys.ie= s[1]:
   (s= ua.match(/firefox\/([\d.]+)/))?Sys.firefox= s[1]:
    (s= ua.match(/chrome\/([\d.]+)/))?Sys.chrome= s[1]:
   (s= ua.match(/opera.([\d.]+)/))?Sys.opera= s[1]:
    (s= ua.match(/version\/([\d.]+).*safari/))?Sys.safari= s[1]:0;
   
    if(Sys.ie) $('span').text('IE: ' +Sys.ie);
   if(Sys.firefox) $('span').text('Firefox: ' +Sys.firefox);
    if(Sys.chrome) $('span').text('Chrome: ' +Sys.chrome);
   if(Sys.opera) $('span').text('Opera: ' +Sys.opera);
    if(Sys.safari) $('span').text('Safari: ' +Sys.safari);
});

 

转载于:https://www.cnblogs.com/seanp/p/6522098.html

<think>我们正在讨论如何通过CSSHack来检测IE浏览器及其版本。CSSHack是一种针对特定浏览器编写CSS代码的技术,用于解决浏览器兼容性问题。根据提供的引用,我们可以总结以下信息:1.引用[1]提到CSSHack的原理:由于不同浏览器或版本对CSS的支持和解析不同,我们需要针对特定浏览器写特定的CSS样式。2.引用[2]建议尽可能减少CSSHack的使用,因为存在风险,并且需要层层覆盖来实现不同浏览器的Hack。3.引用[3]提供了仅IE8有效的CSSHack写法,如使用`*`、`*html`等。用户需求:如何通过CSS判断是否为IE浏览器(包括版本识别)。由于IE浏览器(特别是旧版本)有自己独特的解析行为,我们可以利用这些行为来编写仅特定IE版本识别的CSS规则。常见的IE版本CSSHack技巧:-**IE6及以下**:使用下划线`_`或连字符`-`作为属性前缀,或使用`*html`选择器。例如:```css.selector{_color:red;/*仅IE6及以下生效*/*color:blue;/*IE6、IE7生效*/}```-**IE7**:使用`*+html`选择器或`*:first-child+html`选择器(但通常更常用星号`*`来针对IE7及以下)。例如:```css*:first-child+html.selector{color:red;}/*仅IE7生效*/```-**IE8**:可以使用`\0`在属性值后面,或者使用`@media\0screen`等。另外,引用[3]提到有仅IE8有效的Hack。例如:```css.selector{color:red\0;/*IE8及以上(实际上IE9也支持,所以不是唯一)*/}/*或者使用条件注释(但这是HTML方法,非纯CSS)*/```引用[3]可能提到了以下方式(仅IE8):```css@media\0screen{.selector{color:red;}/*仅IE8*/}```-**IE9及IE10**:可以使用`\9`(但`\9`在IE8-10都支持),所以单独针对IE9或10需要其他方式。例如,媒体查询结合Hack:```css@mediascreenand(min-width:0\0){/*这个规则在IE9、IE10、IE11中可能生效,但也可以通过其他方式再覆盖*/}```但是,需要注意的是,上述很多Hack方法在新版本浏览器中可能被修复,而且随着IE逐渐被Edge替代,这些Hack的使用场景也在减少。由于CSSHack的层叠特性,我们通常按照从一般到特殊(即先写非Hack的样式,再用Hack覆盖)的方式编写。更常见的做法是使用条件注释(HTML中)来给不同IE版本添加特定的类,然后通过类名来控制样式,例如:```html<!--[ifIE6]><htmlclass="ie6"><![endif]--><!--[ifIE7]><htmlclass="ie7"><![endif]-->```然后在CSS中:```css.ie6.selector{color:red;}.ie7.selector{color:blue;}```但用户要求的是通过CSS(而不是HTML)来判断。因此,我们主要用CSSHack。下面是一些常用的纯CSSHack方法:1.单独识别IE6:-使用`_`前缀:`_property:value;`-使用`-`前缀:`-property:value;`(不推荐,因为可能被其他浏览器支持)-使用`*html`选择器2.单独识别IE7:-使用`*+html`选择器(或`*:first-child+html`)-使用`*`前缀:`*property:value;`(但要注意,IE6也识别)3.识别IE8:-使用`\0`在属性值末尾(但IE9也支持)-使用媒体查询:`@media\0screen{...}`(仅IE8)4.识别IE9和IE10:-使用`\9`(IE8-10都支持,所以需结合其他方法)-使用媒体查询:`@mediascreenand(min-width:0\0){...}`(可覆盖IE9、10、11)5.单独识别IE9:-使用`:root`选择器和属性后加`\9`(在IE9中有效,但IE10和IE8可能也会识别,因此需要结合其他方法)6.IE11:-使用媒体查询:`@mediaalland(-ms-high-contrast:none),(-ms-high-contrast:active){...}`(针对IE10和IE11)-但是,IE11的单独Hack比较难,可以使用以下方式:```css@mediaalland(-ms-high-contrast:none)and(min-width:0){/*仅IE10和IE11,但可配合其他Hack*/}```然而,为了更精确地针对特定版本,我们可以采用层层覆盖的方法。下面是一个例子,为不同IE版本设置不同的颜色:```css/*所有浏览器*/.selector{color:black;}/*仅IE6*/*html.selector{color:red;}/*或者.selector{_color:red;}*//*仅IE7*/*:first-child+html.selector{color:blue;}/*IE8+*/.selector{color:green\0;}/*IE8,IE9,IE10,IE11?*//*仅IE9*/:root.selector{color:purple\9;}/*IE9以及以下?所以需要覆盖*//*重置非IE9的IE8+的样式*/@media\0screen{.selector{color:orange;}/*仅IE8,因为上面IE8+设置了green,而这里在IE8中会覆盖green,但IE9也会被覆盖?所以需要调整顺序*/}```但是,由于层叠和覆盖关系,这样的代码可能变得非常复杂且难以维护。因此,我们通常建议:1.尽可能避免使用CSSHack,使用条件注释(如果控制HTML)或者特性检测(如使用JavaScript)添加类名。2.当必须使用CSSHack时,要谨慎并充分测试。另外,根据引用[2]的提醒,Hack有风险,应该减少使用。最后,需要说明的是,随着IE的逐渐淘汰,我们更多的是面向现代浏览器开发,所以这些技巧主要用于维护旧项目。对于用户的问题“如何通过CSS判断是否为IE浏览器”,我们可以总结如下:-通过属性前缀(如`_`、`*`)、选择器(如`*html`)以及属性值后缀(如`\0`、`\9`)和媒体查询等方法可以针对特定版本IE进行样式设置,从而间接判断。但请注意,这些方法都是针对特定版本写特定样式,而不是直接返回一个判断值(CSS本身无法返回布尔值)。因此,CSSHack实际上是通过在特定浏览器中应用特定样式来实现的。如果用户需要根据浏览器类型来应用不同的样式规则,那么使用上述Hack方法即可。如果用户需要的是在JavaScript中检测浏览器类型,则应该使用JavaScript方法(如navigator.userAgent),而不是CSS。但是,用户明确要求通过CSS来判断,所以我们提供的都是CSSHack技术。</think> 要使用 CSS Hack 检测 IE 浏览器及其特定版本,可依据 IE 对 CSS 解析的特性差异实现。以下是常见方法及版本定位技巧,基于 IE 特有的 CSS 解析行为(引用内容来源于知识库)[^1][^2][^3]: ### 一、基础 IE 浏览器检测 ```css /* IE 10-11 */ @media all and (-ms-high-contrast: none) { .ie-only { color: red; } } /* 所有 IE 版本 (6-11) */ _:-ms-fullscreen, .ie-all { color: blue; } ``` ### 二、精准版本检测 Hack ```css /* IE 6 */ * html .ie6 { color: green; } /* 或 _property: value; */ /* IE 7 */ *:first-child+html .ie7 { color: yellow; } /* IE 8 */ @media \0screen { .ie8 { background: orange; } } /* IE 9 */ @media screen and (min-width:0\0) and (min-resolution: .001dpcm) { .ie9 { border: 1px solid; } } ``` ### 三、条件注释替代方案 (HTML 层) ```html <!--[if IE 6]> <div class="ie6-banner">仅 IE6 可见</div> <![endif]--> ``` ### 四、关键原则 1. **降级覆盖**:优先写标准 CSS,再用 Hack 覆盖异常(减少维护成本)[^2] ```css .box { padding: 10px; } /* 标准 */ _:-ms-fullscreen, .box { padding: 15px; } /* IE 覆盖 */ ``` 2. **避免滥用**:现代浏览器兼容建议用特性查询 `@supports` 代替 Hack[^1] 3. **版本隔离**:使用层叠覆盖规则(旧版本 Hack 在前,新版在后) > ⚠️ 风险提示:CSS Hack 高度依赖浏览器未公开的解析行为,升级后可能失效。推荐仅用于遗留系统维护,新项目应使用特性检测等现代方案[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值