让网站在IE9中正常显示(动态输出X-UA-Compatible参数)

添加评论 2011年1月12日

在昨天提到用 IE9 看我的网站首页会有点点杯具,本主题我花最多心思的一个分页导航居然在 IE9 下不能用,而且在主题上线一周后才发现这个 bug,这让我情何以堪,情何以堪啊!!!任何 bug 对我来说都是不被允许的,我决心要搞定它。其实要解决这个 bug 一点也不难,既然 IE9 不能实现这个拖动的分页导航,那就把 IE 浏览器直接降级为 IE8 或者 IE7 就可以了。这个方法我之前也有介绍过。这个目前也是很多大型网站使用的兼容方法。

但是,这样做会引起另外一个让我情何以堪的后果。因为我用的是 HTML5 的声明,已经通过了 W3C 的 HTML5 标准验证,但是在 meta 中加入那一行浏览器降级代码之后,HTML5 的 W3C 就无法通过了,就因为那一个错误!好吧,为了我的完美主义,我要绕开这个降级代码,忽悠一下 W3C 验证。

原理很简单,就是用 PHP 判断浏览器的版本,如果是 IE9 再输出那段 meta 信息,那其他浏览也就避开了这段代码,也就可以顺利通过 W3C 验证了。具体方法如下:

<?php
$UA = $_SERVER['HTTP_USER_AGENT'];
if(strpos($UA, 'MSIE 9.0'))
echo '<meta http-equiv="X-UA-Compatible" content="ie=7" />';
?>

如果要使用兼容IE8的模式,将content="ie=7"改为content="ie=8"即可。

这样就可以让 IE9 在不打开兼容模式的前提下强制把 IE9 降级为 IE7,确保网站可以安全运行效果。但是这就又产生另外一个问题,IE9 自称是最能体现 HTML5 和 CSS3 的浏览器,所以本来网站在 IE9 下是可以有圆角有阴影的,但是这样一来,伪 IE7 下就不再有圆角和阴影这些 CSS3 的效果。没有关系,在用户体验方面,网站的功能体现肯定要比美观更重要,两者不用权衡,我选择前者。至此,网站终于可以在IE9也显示正常了。

via:wange.im

  1. 2011年1月12日 at 22:23 | #1
    xixin

    诶,微软真是害人,一个版本一个标准,要说统一标准,先将IE各个版本的标准都统一好,就不用这个恶心的代码了。

  2. 2011年1月18日 at 18:12 | #2
    江子成

    兼容性对于网页设计师来说非常重要,最好办法是建立一个完全不需依赖任何网页浏览器特性或功能的网站,很多时候这个只是一个期盼。虽然这种兼容模式能将网页限制在某个特定版本的IE中,真正的解决之道就如上面的朋友所说,微软能够把各个IE版本统一起来。

  3. 2011年1月18日 at 21:50 | #3
    iefans

    相信这个期盼再等等就可以实现了,目前微软正在朝着这个方向而努力,并在全球范围内不断加大对IE8和IE9的推广。

  4. 2012年3月8日 at 16:56 | #4
    howgoo

    微软自己创下的罪孽让他自己去扫吧。

  1. 还没有 trackbacks
订阅评论