强制IE8 *不*使用兼容性视图
刚刚更新我的网站更新,更符合标准的devise。 我以前的devise是如此垃圾,我不得不使用IE = EmulateIE标签强制IE7仿真。
不幸的是,我相信浏览器可能会caching这个设置从以前的访问,导致我的新网站(这看起来很棒,没有button按)再次看起来垃圾…
有没有我可以使用的任何相反的标签,或者我可以使PHP做一些神奇的HTTP标头禁用此设置的caching?
在缺lessX-UA兼容的http-equiv头文件的情况下,兼容性模式由!DOCTYPE
(或不存在!DOCTYPE
,视情况而定)确定。 对于其中的图表!DOCTYPE
给你哪种模式(在不同的浏览器)看到这里:
http://hsivonen.iki.fi/doctype/ (你需要向下滚动到页面底部。)
你可以通过使用meta
元素来指定一个X-UA-Compatible http-equiv头来覆盖这个行为,就像这样: <meta http-equiv="X-UA-Compatible" content="IE=edge" >
(注意:IE =边缘是最高可用版本 – 目前IE8截至本文发布 – 或者可以明确指定IE8)。
有关更多信息,请参阅此处: http : //msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx
您也可以使用下面的代码通过configuration或.htaccess文件在Apache中设置X-UA-Compatible标头。 信贷转到html5boilerplate.com
# ---------------------------------------------------------------------- # Better website experience for IE users # ---------------------------------------------------------------------- # Force the latest IE version, in various cases when it may fall back to IE7 mode # github.com/rails/rails/commit/123eb25#commitcomment-118920 # Use ChromeFrame if it's installed for a better experience for the poor IE folk <IfModule mod_setenvif.c> <IfModule mod_headers.c> BrowserMatch MSIE ie Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie </IfModule> </IfModule> <IfModule mod_headers.c> # # Because X-UA-Compatible isn't sent to non-IE (to save header bytes), we need to inform proxies that content changes based on UA # Header append Vary User-Agent # Cache control is set only if mod_headers is enabled, so that's unncessary to declare </IfModule>
IE永远不会自行cachingX-UA兼容性设置。 唯一的另一种可能性是,在设置X-UA-Compatbile元标记之前,网站的用户按下地址栏上的“兼容性视图”button。 那么你的网站的域将出现在本地存储在客户机上的列表中。 我写了一篇关于网站所有者如何在本地存储的列表中删除域名的博客文章(如果/当某个站点更新为IE8兼容的时候)。 http://blogs.msdn.com/ie/archive/2009/07/01/ie-compatibility-list-pruning.aspx
我知道这个post是旧的,但我发现join到你的.htaccess文件:
Header set X-UA-Compatible "IE=edge"
…比将其添加到页面更易于pipe理。
希望能帮助别人。