从今年3月中旬微软的IE8发布到现在,差不多有4个月了,这期间一直协助国内的网络公司做IE8兼容性的工作。由于工作的性质原因,现在几乎是与人见面就问,你的网站与IE8兼容了吗?协助国内网站做IE8的兼容性,差不多是最近一段时间的工作的全部。
为什么不兼容性
为什么微软IE8发布后,要求网站去做兼容了,要回答这个问题,我们就必须看看微软IE的发展历程,就不难明白其中的原因。微软的IE6是通过XP、Win2003等操作系统发布出来,作为占统治地位的桌面操作系统,也使得IE占据了通知地位,许多的网站开发的时候,就按照IE6的标准去开发,而IE6自身的标准也是微软公司内部定义的。到了IE7出来的时候,采用了微软公司内部标准以及部分W3C的标准,这个时候许多网站升级到IE7的时候,就比较痛苦,很多代码必须调整后,才能够正常的运行。而到了微软的IE8这个版本,基本上把微软内部自己定义的标准抛弃了,而全面的支持W3C的标准,由于基于对标准彻底的变化了,使得原先在早期IE8版本上能够访问的网站,在IE8中无法正常的访问,会出现一些排版错乱、文字重叠,显示不全等各种兼容性错误。这个时候就必需想办法使得旧有的网站能够兼容,保证这些网站能够得到正确的显示结果。
用户怎么办?
作为一般的用户,在查看某个网站时候,发现当前的页面有了不兼容的情况产生时,可以鼠标轻轻的点击地址栏右边的兼容性视图切换按钮,则可以在兼容性模式下查看当前网页。如果不想这么麻烦,可以直接打开“工具”—“兼容性视图设置”对话框,把本地IE8浏览器设置为“使用兼容模式来查看所有网站”,那么这个时候你访问网站的时候,都可以在兼容模式下显示站点内容了。
网站提供商怎么办
从网站的角度看来,必需要自身做到兼容,使得那些采用IE8标准模式来查看网站的用户也能够得到正确的显示结果,通过在网站中做一些设置,使得客户查看你的网站时候,能够自动以兼容模式显示。
第一种办法,是在单个的页面中,添加兼容性标记,示例代码如下:
1 <html>
2 <head>
3 <!-- Mimic Internet Explorer 7 -->
4 <title>我的网页</title>
5 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
6 </head>
7 <body>
8 <p>内容在此处。</p>
9 </body>
10 </html>
11
在这里添加兼容性标签后,只对当前页面有用,而且必须是在head标签内部,同时也必须是在其他css样式定义或者链接的前面,否则不会产生效果的。
第二种办法,就是在站点的配置文件中,修改web.config文件,使得该网站能够兼容,示例代码如下:
1 <?xml version="1.0" encoding="utf-8"?>
2 <configuration>
3 <system.webServer>
4 <httpProtocol>
5 <customHeaders>
6 <clear />
7 <add name="X-UA-Compatible" value="IE=EmulateIE7">
8 </customHeaders>
9 </httpProtocol>
10 <system.webServer>
11 </configuration>
12
第三种办法,就是在服务器级别对当前服务器做设置,使得服务器下面所有的站点都能够与IE8兼容性,这是推荐的做法,通过在服务器的配置花的时间最少,由于是整个服务器起作用,因此能很好的解决潜在的兼容性问题,具体设置可以参考以下资料介绍网站兼容的4个层次:
1、IIS,http://msdn.microsoft.com/zh-cn/library/cc817572.aspx
2、Apache,http://msdn.microsoft.com/zh-cn/library/cc817573.aspx
3、其他服务器,在后续的文章中会专门介绍一些主流的服务器中兼容性设置办法
微软怎么办?
作为微软公司说来,维护了一个“兼容性视图”列表,把目前没有兼容的网站放置到里面,只要用户同意接受来自微软公司更新的兼容性视图网站,那么则能够得到正确的结果。如果大家需要查看自己的网站是否在兼容性视图中,可以在IE8浏览器到地址栏里面,输入“res://iecompat.dll/iecompatdata.xml”来查看。会得到一个如下图所示的兼容性视图网站列表:
还有就是微软能够为了IE8的兼容性,做出免费的技术支持,去协助网站做好兼容性的修复工作。