近日测试内网下公司的一个网站时,在IE浏览器中打开出现了报错。看了一下发现该网站在IE中开启了兼容性视图。网站默认打开时以兼容性视图显示一般只有两种情况。 要么是本地IE浏览器将网站添加了兼容性列表,检查后在列表中没有发现该网址。要么就是网站设置了 X-UA-Compatible 属性,查看网站源代码也没有发现这么一项,那是什么原因导致这个问题的出现呢? 最后发现原来还是本地IE的兼容性视图设定的原因。众所周知在IE浏览器上有一个“兼容性视图设定”,这个设定可以将需要使用兼容性设定的网站先加入清单中,当之后浏览的时候就会自动启用兼容性视图来观看网站。 刚才已经说明了没有添加相关的网址,这么还会这样呢?在“兼容性视图设定”中,有一项设定为“在兼容性视图中显示 Intranet 网站”,默认该项是启用的。也就是因为这个选项勾选了,导致如果在内部网络上浏览内部的测试主机网站,就会自动启用了兼容性视图,所以只要将此勾选取消后浏览网站就不会自动启用兼容性视图了。 以上为解决方法,如果有碰到类似情况的朋友可以尝试看看。 为什么IE兼容模式没有IE6模式? 相信经常使用 IE 浏览器的用户对于 IE 兼容模式不会感到陌生,当然我们浏览网站出现错乱的问题,开启 IE 兼容模式便可以正常浏览了。 为什么会有 IE 兼容模式的出现呢?这个和IE浏览器的发展历程相关,在 IE8 之前浏览器基本上属于 IE 一家独大。由于网络标准发展缓慢,为了应对网页开发的需求,IE 定义了很多只有 IE 才能解析的标准。 后来火狐和 Chrome 出现,推动了网络标准的前进。但之前按照 IE 标准做的网站就会出现问题,这样使得 IE 处于一种很尴尬的处境。 为了解决这个问题,微软在 IE8 以后加入了所谓的兼容性模式,也就是能够在旧的网站使用兼容性模式浏览,而一切正常,而到比较新的网站就用正常模式浏览。 并且也是从 IE8 开始支持 X-UA-Compatible 元标记(允许网页作者指定 IE 用哪个内核来渲染页面),并在其内置的开发工具中提供名为“文档模式”的内核切换调试方式。从 IE8 开始,上述两种方式(元标记、开发工具)就都没提供 IE6 模式。 接下来,我们进一步分析一下为什么唯独没有IE6模式: IE5 本质上就是“怪癖模式 (Quirks Mode)”。IE 浏览器基于“向后兼容”的目的,必须要包含此内核,以便“正确”渲染早期网页。(随便说一句,事实上非 IE 浏览器也都是自带 Quirks Mode 渲染模式的。这里不展开,有兴趣可以自行查询“DTD”、“Quirks Mode”、“浏览器渲染模式”等关键词。)因此,对 IE 浏览器的开发工具来说,提供 IE5 模式没有任何成本;而且在渲染早期网页时,必然就会进入此内核,开发工具不得不包含它。 IE7 本质上是 IE6.1(至少我是这样认为的)。相比 IE6 而言,IE7 没有提供巨大的实质上的内核功能升级,更多地是在打补丁、修 bug。可以这样说,IE6 和 IE7 这两个版本的内核是严重同质化的;另一方面 IE6 的用户量本身也在自然萎缩。因此当 IE8 推出时,它的元标记和开发工具就放弃了 IE6 模式。 微软从 IE8 开始追赶其它符合 W3C 标准的浏览器,IE8 之后每个版本的内核之间都存在巨大差异;而且从 IE8 开始,IE 几乎以每年一个版本的速度在发布,目前已经发布至 IE11,由于 IE 本身没有自动升级的功能,这使得多版本共存的状况会长期存在。这样看来,在最新 IE 版本的开发工具中就不得不包含每个过往版本的内核了。 |