刚刚将我的网站更新为更新,更符合标准的设计。我以前的设计是如此垃圾,我不得不使用IE = EmulateIE标签来强制IE7仿真。
不幸的是,我相信浏览器可能会从之前的访问中缓存此设置,导致我的新网站(在没有按下按钮的情况下看起来很棒)再次看起来像垃圾......
我是否可以使用任何相反的标记,或者我可以让PHP对HTTP标题执行某些操作来禁用此设置的缓存?
答案 0 :(得分:51)
在没有兼容X-UA的http-equiv标头的情况下,兼容模式由!DOCTYPE
确定(或者根据具体情况而不存在!DOCTYPE
)。对于!DOCTYPE
给出哪种模式(在各种浏览器中)的图表,请参见此处:
http://hsivonen.iki.fi/doctype/ (您需要向下滚动到页面底部。)
您可以使用meta
元素指定兼容X-UA的http-equiv标头来覆盖此行为,如下所示:
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
(注意:IE = edge具有最高可用版本 - 目前是IE8的发布 - 或者可以明确指定IE8。)
有关详细信息,请参阅此处: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx
答案 1 :(得分:8)
您还可以使用以下代码通过config或.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>
答案 2 :(得分:5)
IE永远不会自行缓存X-UA兼容性设置。唯一的另一种可能性是,在您设置X-UA-Compatbile元标记之前,网站的用户按下地址栏上的“兼容性视图”按钮。然后,您网站的域名将显示在客户端计算机上本地存储的列表中。我写了一篇博客文章,说明如果/当网站更新为IE8兼容时,网站所有者如何从本地存储列表中删除其域名。 http://blogs.msdn.com/ie/archive/2009/07/01/ie-compatibility-list-pruning.aspx
答案 3 :(得分:5)
我知道这篇文章很旧,但我发现将它添加到你的.htaccess文件中:
Header set X-UA-Compatible "IE=edge"
...比将其添加到页面更易于管理。
希望能有所帮助。