搜索
首页web前端H5教程\9和\0可能hack IE11\IE9\IE8无效原因详解

每次设计一张网页或一个表单,都被各种浏览器的兼容问题伤透脑筋,尤其是IE家族。在做兼容性设计时,我们往往会使用各种浏览器能识别的独特语法进行hack,从而达到各种浏览器下显示正常的目的。其中,我们用得最多莫属于\9和\0了。\9和\0是hack IE8、IE9、IE11的独特标识。但是问题来了,\9和\0到底怎样hack IE8、IE9、IE11这三个浏览器?这个问题一直困扰我很久,不过,今天我终于搞明白了,也独创了一个能hack IE8、IE9、IE11这三个浏览器的代码写法模式,本文将与各位分享。

\9和\0为什么可能hack IE11\IE9\IE8无效?

可能很多人都略明白,\0是用来hack IE8、IE9、IE11的,而\9是用来hack IE9的。但有时你真正运用起来,它并不凑效。看下面的html代码:

<!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>hack IE8/IE9/IE11_css实例_卡卡网 webkaka.com</title>
    <style type="text/css">
    .content{
          width:400px;height:50px;color:#ccc;
          background-color:#FF0000;  /* 红色 */
          background-color:#0000FF\0;  /* 蓝色 */
          background-color:#FFFF00\9;  /* 黄色 */
    }
    </style>
</head>
<body>
     <div class="content">IE8 IE9 IE11均显示黄色</div>
</body>
</html>

上例中,\9和\0就达不到hack 各IE浏览器版本的目的。不过我们把 /* 蓝色 */ 和 /* 黄色 */ 这两行调换,又会怎样显示呢?请看html代码:

<!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>hack IE8/IE9/IE11_css实例_卡卡网 webkaka.com</title>
    <style type="text/css">
    .content{
          width:400px;height:50px;color:#ccc;
          background-color:#FF0000;  /* 红色 */ 
          background-color:#FFFF00\9;  /* 黄色 */
          background-color:#0000FF\0;  /* 蓝色 */
    }
    </style>
</head>
<body>
     <div class="content">IE11显示黄色,IE8 IE9 均显示蓝色</div>
</body>
</html>

结果是,IE11显示黄色,而IE8和IE9均显示蓝色。

上述两个例子说明,IE8、IE9都能读懂\9和\0标识,此两标识哪个写在后面就以哪个为准,而IE11仅能读懂\9标识。

至此,我们能否根据上述结论来写代码来hack IE8、IE9和IE11三个浏览器?显然是不可以的,至少你不可以hackIE8和IE9,仅能hackIE11。

如何hack IE8和IE9

那么,我们如何去hack IE8和IE9呢?这个就是问题的关键。

在此文 css区分ie8/ie9/ie10/ie11 chrome firefox的代码 中提到,IE9以上浏览器可以读懂此代码:

/* IE9+ */
@media all and (min-width:0) {
    .divContent{
        background-color:#eee;
    }
}

我们用此代码结合前面的代码,是不是就可以hack IE8和IE11了?完整html代码如下:

<!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>hack IE8/IE9/IE11_css实例_卡卡网 webkaka.com</title>
    <style type="text/css">
    .content{
          width:400px;height:50px;color:#ccc;
          background-color:#FF0000;  /* 红色 */ 
          background-color:#FFFF00\9;  /* 黄色 */
          background-color:#0000FF\0;  /* 蓝色 */
    }
    /* IE9+ */
    @media all and (min-width:0) {
        .content{
            background-color:#000;   /* 黑色 */
        }
    }
    </style>
</head>
<body>
     <div class="content">IE11显示黄色,IE8 显示蓝色,IE9显示黑色。</div>
</body>
</html>

至此,IE8、IE9、IE11的兼容性问题就解决了。

不过,还没玩,因为 @media all and (min-width:0) 在 Chrome、Firefox、360等浏览器同样有效。所以,上面代码需要稍微修改下,在 @media all and (min-width:0) {} 里面的css语句同样加上\0标识,表示这是属于IE9的样式。修改后的完整代码如下:

<!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>hack IE8/IE9/IE11_css实例_卡卡网 webkaka.com</title>
    <style type="text/css">
    .content{
          width:400px;height:50px;color:#ccc;
          background-color:#FF0000;  /* 红色 */ 
          background-color:#FFFF00\9;  /* 黄色 */
          background-color:#0000FF\0;  /* 蓝色 */
    }
    /* IE9+ */
    @media all and (min-width:0) {
        .content{
            background-color:#000\0;   /* 黑色 */
        }
    }
    </style>
</head>
<body>
     <div class="content">IE11显示黄色,IE8 显示蓝色,IE9显示黑色。</div>
</body>
</html>

至此,IE8、IE9、IE11的兼容性问题就完美解决了。

meta声明属性 IE=Edeg 后,IE8\IE9\IE11的兼容代码

但是,如果网页HTML代码里声明了Meta元件 IE=Edge,那么上面的代码是不对的。

先看第一个html代码:

<!DOCTYPE html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>hack IE8/IE9/IE11_css实例_卡卡网 webkaka.com</title>
    <style type="text/css">
    .content{
          width:400px;height:50px;color:#ccc;
          background-color:#FF0000;  /* 红色 */
          background-color:#0000FF\0;  /* 蓝色 */
          background-color:#FFFF00\9;  /* 黄色 */
    }
    </style>
</head>
<body>
     <div class="content">IE11显示蓝色,IE8 IE9均显示黄色</div>
</body>
</html>

结果是,IE11显示蓝色,IE8 IE9均显示黄色,并非三个浏览器都显示黄色了。

这就说明,加了meta IE=Edge 这句,IE11不再能读\9这个标识。

我们再看如下代码:

<!DOCTYPE html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>hack IE8/IE9/IE11_css实例_卡卡网 webkaka.com</title>
    <style type="text/css">
    .content{
          width:400px;height:50px;color:#ccc;
          background-color:#FF0000;  /* 红色 */
          background-color:#FFFF00\9;  /* 黄色 */
          background-color:#0000FF\0;  /* 蓝色 */
    }
    </style>
</head>
<body>
     <div class="content">IE8 IE9 IE11 均显示蓝色</div>
</body>
</html>

execcodegetcode

结果是,IE8 IE9 IE11 均显示蓝色,这说明了,IE8 IE9 IE11 均能读懂\0这个标识。

结合上面两个例子,可以得出结论,加了meta IE=Edge 属性后,IE8 IE9能同时读懂\9和\0这两个标识,而IE11仅能读懂\0这个标识。

所以,我们可以据此来hack出IE11。如下html代码加以说明:

<!DOCTYPE html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>hack IE8/IE9/IE11_css实例_卡卡网 webkaka.com</title>
    <style type="text/css">
    .content{
          width:400px;height:50px;color:#ccc;
          background-color:#FF0000;  /* 红色 */
          background-color:#0000FF\0;  /* 蓝色 这个是给IE11的 */
          background-color:#FFFF00\9;  /* 黄色 这个是给IE8和IE9的 */
    }
    </style>
</head>
<body>
     <div class="content">IE11显示蓝色,IE8 IE9均显示黄色</div>
</body>
</html>

这样,我们再用上面的代码hack出IE8和IE9就可以了。

如何hack IE8和IE9 ?还是前面那个hack IE8 IE9的关键代码:

@media all and (min-width:0) {}

完整html代码这样写:

<!DOCTYPE html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>hack IE8/IE9/IE11_css实例_卡卡网 webkaka.com</title>
    <style type="text/css">
    .content{
          width:400px;height:50px;color:#ccc;
          background-color:#FF0000;  /* 红色 */
          background-color:#0000FF\0;  /* 蓝色 这个是给IE11的 */
          background-color:#FFFF00\9;  /* 黄色 这个是给IE8和IE9的 */
    }
    /* IE9+ */
    @media all and (min-width:0) {
        .content{
            background-color:#000\9;   /* 黑色 这个是给IE9的 */
        }
    }
    </style>
</head>
<body>
     <div class="content">IE11显示蓝色,IE8显示黄色,IE9显示黑色</div>
</body>
</html>

以上是\9和\0可能hack IE11\IE9\IE8无效原因详解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何将音频添加到我的HTML5网站上?如何将音频添加到我的HTML5网站上?Mar 10, 2025 pm 03:01 PM

本文解释了如何使用&lt; audio&gt;元素,包括用于格式选择的最佳实践(MP3,OGG Vorbis),文件优化和JavaScript控件用于播放。 它强调使用多个音频f

如何将HTML5表单用于用户输入?如何将HTML5表单用于用户输入?Mar 10, 2025 pm 02:59 PM

本文解释了如何创建和验证HTML5表格。 它详细介绍了&gt;元素,输入类型(文本,电子邮件,编号等)和属性(必需,模式,最小,最大)。 HTML5的优势比旧方法形成

如何使用HTML5页面可见性API检测页面何时可见?如何使用HTML5页面可见性API检测页面何时可见?Mar 13, 2025 pm 07:51 PM

本文讨论了使用HTML5页面可见性API来检测页面可见性,提高用户体验并优化资源使用情况。关键方面包括暂停媒体,减少CPU负载以及基于可见性变化管理分析。

如何使用视口元标记来控制移动设备上的页面缩放?如何使用视口元标记来控制移动设备上的页面缩放?Mar 13, 2025 pm 08:00 PM

本文讨论了使用视口元标记来控制移动设备上的页面缩放,重点是宽度和初始尺度之类的设置,以获得最佳响应和性能。

如何使用地理位置API处理用户位置隐私和权限?如何使用地理位置API处理用户位置隐私和权限?Mar 18, 2025 pm 02:16 PM

本文讨论了使用GeOlocation API管理用户位置隐私和权限,并强调要求权限,确保数据安全性并遵守隐私法律的最佳实践。

如何使用HTML5和JavaScript创建互动游戏?如何使用HTML5和JavaScript创建互动游戏?Mar 10, 2025 pm 06:34 PM

本文使用JavaScript详细介绍了创建Interactive HTML5游戏。 它涵盖了游戏设计,HTML结构,CSS样式,JavaScript逻辑(包括事件处理和动画)以及音频集成。 必需的JavaScript库(Phaser,Pi

如何将HTML5拖放API用于交互式用户界面?如何将HTML5拖放API用于交互式用户界面?Mar 18, 2025 pm 02:17 PM

本文介绍了如何使用HTML5拖放API来创建交互式用户界面,详细介绍了使元素可拖动的步骤,处理关键事件并通过自定义反馈来增强用户体验。它还讨论了一个常见的陷阱

如何使用HTML5 Websockets API进行客户端和服务器之间的双向通信?如何使用HTML5 Websockets API进行客户端和服务器之间的双向通信?Mar 12, 2025 pm 03:20 PM

本文解释了HTML5 Websockets API,用于实时双向客户服务器通信。 它详细详细介绍了客户端(JavaScript)和服务器端(Python/Flask)的实现,以应对可伸缩性,状态管理,一个挑战

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)