兼容模式的由来

早期的浏览器, IE 独大。这也就导致其很多东西和w3c 的标准有很多不一样的地方。譬如他有自己才看的懂得自定义Tag。

一个熟悉的名词--浏览器大战, 形象的刻画了这期间发生的事情。

IE 的占用量逐步下降, firefox 和chrome异军突起, 要不是捆绑在windows 系统, 真不知道IE 是否早就消亡了。原因很简单, IE的速度等各方面表现都不是很好。

微软逐渐意识到自己搞自己的是不行的, 在IE 后续的版本中就逐渐的向标准靠拢了。

这样的话, 问题就来了。新版的IE逐渐接近标准, 而旧版和标准差异又很大, 新版和旧版直接如何兼容呢?

总不能说, IE 发布了一个新版, 原先开发的网页都无法使用了。为了解决这个问题,微软在IE8以后加入了所谓的兼容性模式,也就是能够在旧的网站使用兼容性模式浏览,而一切正常,而到比较新的网站就用正常模式浏览。

特别注意的是, 兼容模式是从IE8 才开始有的。也是因为IE8跟IE7有不少不同。

如何定义兼容模式

首先说一下<!DOCTYPE> 声明的作用

经常看到的声明类似:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

DTD -文档类型定义.

这是个浏览器引擎使用的,dtd 里面定义的是哪些标签是这个页面可以使用的正确的标签以及这些标签的结构是怎样的。

不过html 不符合这个标准,可能无法显示。

如果没有指定有效的doctype声明,大多数浏览器都会使用一个内建的默认DTD。在这种情况下,浏览器会用内建的DTD来试着显示你所指定的标记。对于一些临时性的、匆忙拼凑的文档(这种文档有许多),你确实可以考虑省略doctype声明,并接受浏览器的默认显示。

对于兼容模式,微软的给我们的解决方案是设置X-UA-Compatible。

X-UA-compatible 标头不区分大小写;不过,它必须显示在网页中除 title 元素和其他 meta 元素以外的所有其他元素之前的标头(HEAD 节(可能为英文网页))中。

语法也很简单,在html中加入

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

以上的作用是:

无论是否用DTD声明文档标准,IE8/9都会以IE7引擎来渲染页面。

content 除了设置成IE=7, 还可以设置成:

1. content="edge"
Windows以最高版本的IE显示内容。

2. content="IE=EmulateIE7"

根据 <!DOCTYPE> 指令确定如何呈现内容。标准模式指令以Windows Internet Explorer 7 标准模式显示,而 Quirks 模式指令以 IE5 模式显示。与 IE7 模式不同,EmulateIE7 模式遵循 <!DOCTYPE> 指令。对于多数网站来说,它是首选的兼容性模式。

定义多种文档模式时,使用逗号(,)

<meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" />
/*或者是*/
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7,IE=EmulateIE9" />

或者

<meta http-equiv="X-UA-Compatible" content="IE=7,9" />

参考

1. http://msdn.microsoft.com/en-us/library/jj676915%28v=vs.85%29.aspx

2. http://msdn.microsoft.com/en-us/library/cc288325%28v=vs.85%29.aspx

IE 兼容模式的更多相关文章

  1. 转:IE兼容模式下 SCRIPT1028: 缺少标识符、字符串或数字

    IE兼容模式下 SCRIPT1028: 缺少标识符.字符串或数字例如下面一段代码 var a = {    x: 1,    y: 2,};alert(a.x);如果在IE的兼容性视图(IE7文档模式 ...

  2. 解决IE兼容模式问题

    IE浏览器从IE8开始添加了兼容模式,开启后会以低版本的IE进行渲染.在浏览网页时候会出现网页显示问题,于是可以在html中加入以下代码来使IE使用固定的渲染模式: <metahttp-equi ...

  3. IE8兼容模式设置

    设置---兼容性视图设置--添加此网站--在IE8中调试(防止调整IE内核后浏览器崩溃,360可通过设置极速模式-兼容模式  点击地址栏绿色图标)

  4. 强制浏览器使用兼容模式,Web.config,httpProtocol

    对于一些政府类的网站,很多支持IE6~8,而不支持使用更高版本浏览器浏览.虽然有些浏览器会自动使用兼容模式,或有些人会手动调整浏览器的兼容模式,但不是每一个人.每一款浏览器都可以做到用兼容模式.所以, ...

  5. [AJAX]ajax在兼容模式下失效解决办法

    使用jQuery,用ajax实现局部刷新功能,在火狐,360急速浏览器高速模式下,ie8,9都能正常运行,但切换到兼容模式下无效,解决办法有两种关闭浏览器兼容性视图,二是引入json2.js文件 这里 ...

  6. 360浏览器兼容模式默认显示ie最高版本

    之前写完代码都会放在360浏览器里跑一边,基本没啥问题,因为设置的都是极速模式,极速模式内置的是webkit内核,后来测试人员测试了兼容模式,发现会出各种问题,打开控制台一看,“我的天呐”,默认的竟然 ...

  7. 使用X-UA-Compatible来设置IE浏览器兼容模式(转)

    使用X-UA-Compatible来设置IE浏览器兼容模式 文件兼容性用于定义让IE如何编译你的网页.此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式. 前言 ...

  8. 弹出层在兼容模式和IE8模式下显示不正常

    弹出层在火狐.谷歌.360极速模式.IE6下都能100%面积正常显示,但在IE8和360的兼容模式下只显示弹出层下半部分或右半部分的内容,在主页面加上: <meta http-equiv=&qu ...

  9. 再谈 X-UA-Compatible 兼容模式

    如何理解 IE 的文档兼容模式(X-UA-Compatible)? IE 浏览器支持多种文档兼容模式,得以因此改变页面的渲染效果. IE9 模式支持全范围的既定行业标准,包括 HTML5(草案), W ...

  10. IE兼容模式下两个小问题,JSON.stringify和SCRIPT70 无权限

    JSON.stringify在IE兼容模式下不起作用,原来是序列化对象是一个easyuiTree的树节点对象,过于复杂的对象 SCRIPT70 权限,问题出现在获取页面iframe时: var ifr ...

随机推荐

  1. 图片转换成Base64编码集成到html文件

    首先为什么要这么做?  原因很简单这样可以减少与服务器的请求,当然对于一些浏览器并不支持,如IE8.通常用在手机版网站中,具体转化方法如下: 1.在线打开Base64的编码器将图片编码成Base64 ...

  2. 基于visual Studio2013解决C语言竞赛题之1048打印矩阵

      题目 解决代码及点评 /* 48. 找规律填写N×N方阵.如N=8时, 其方阵为: */ #include <stdio.h> #include <stdlib.h& ...

  3. C# c++ 传递函数指针

    C#和c++之间相互传递函数指针 在C++和C#之中都有很多callback method,可以相互调用吗,怎么传递,是我表弟的问题. 1.定义c++ dll ,导出方法 // sort.cpp : ...

  4. 4Sum -- LeetCode

    原题链接: http://oj.leetcode.com/problems/4sum/  这道题要求跟3Sum差点儿相同,仅仅是需求扩展到四个的数字的和了.我们还是能够依照3Sum中的解法,仅仅是在外 ...

  5. Python的字符串格式化符号

    1.字符串格式化符号含义 %c:格式化字符及其ASCII码 %s:格式化字符串 %d:格式化整数 %o:格式化无符号八进制数 %x:格式化无符号十六进制数 %X:格式化无符号十六进制数(大写) %f: ...

  6. SSH2三大框架整合出错(四)

    <%@taglib prefix="c" uri="http://java.sun.com/jsf/core" %> usage: java org ...

  7. 图片热区——axure线框图部件库介绍

    首先,我们将图片热区组建拖动到axure页面编辑区域 1. 图片热区为页面图片或者其他部件添加热区,添加交互 我们一般在做专题的时候,会遇到一些组合商品,但是又需要单独分别设置连接,如果是2张图片还好 ...

  8. eclipse for mac 快捷键

    Eclipse for Mac 常用快捷键 为了提高开发效率,Eclipse 为我们提供了许多快捷键,它们能够帮助我们快速和方便的完成一些繁琐的操作. 关于 Eclipse for Windows 的 ...

  9. hadoop拷贝文件时 org.apache.hadoop.ipc.RemoteException异常的解决

    1.系统或hdfs是否有空间 2.datanode数是否正常 3.是否在safemode 4.防火墙关闭 5.配置方面 6.把NameNode的tmp文件清空,然后重新格式化NameNode

  10. 某公司ASP.NET应聘上机试题

    ASP.NET笔试题是ASP.NET程序员面试必须经历的,一般会叫你填两个表 1个是你的详细信息表 1个是面试题答卷 两个都要注意反正面是否都有内容不要遗漏,如果考你机试一般也有两种,就是程序连接数据 ...