2010-01-14 73 views
55

剛剛更新我的網站更新,更符合標準的設計。我以前的設計非常垃圾,我不得不使用IE = EmulateIE標籤來強制IE7仿真。強制IE8 *不*使用兼容性視圖

不幸的是,我認爲,瀏覽器可以高速緩存從以前的訪問此設置,導致我的新網站(沒有按下按鈕看起來很棒)看一次垃圾......

是否有任何相反的標籤,我可以使用,或者我可以讓PHP做一些神奇的HTTP標頭禁用這個設置的緩存?

+9

你知道嗎,我以爲我會閱讀關於這個主題的所有以前的問題,但這個問題右邊的標籤持有答案: 案例關閉! – 2010-01-14 14:25:43

+6

然後發佈它作爲答案並接受它 - 我需要相同的信息,幾乎錯過了評論。只是不要忘記鏈接到「右邊的標籤」:) – AnonJr 2010-01-19 12:38:47

+2

你可以做它作爲一個實際的HTTP標頭,而不是HTML。這樣做更好,因爲沒有評論者不太可能將其複製並粘貼到不兼容的網站中。 'header('X-UA-Compatible:IE = edge);' – TRiG 2010-06-22 16:56:27

回答

51

如果沒有X-UA兼容的http-equiv頭文件,兼容性模式由!DOCTYPE(或根據情況可能不存在!DOCTYPE)確定。對於一個圖表,其中!DOCTYPE賦予您的模式(在不同的瀏覽器),在這裏看到:

http://hsivonen.iki.fi/doctype/ (你需要向頁面底部向下滾動。)

您可以覆蓋這個行爲使用meta元素指定的X-UA兼容HTTP的當量頭,像這樣: <meta http-equiv="X-UA-Compatible" content="IE=edge" >

(注:IE =邊緣去與可用的最高版本 - 目前IE8作爲此張貼 - 或一個可以明確指定IE8。)

欲瞭解更多信息,請參閱: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx

+7

與其爲IE版本使用aribirarity大數字,最好使用受支持的關鍵字'edge'來強制使用最新版本。 2010-01-24 19:50:25

+0

@mbenny:好點。我已經更新了答案以反映這一點。 – 2010-01-25 00:51:38

+12

值得注意的是,META標籤必須位於HEAD部分中的任何SCRIPT標籤之前。 – xero 2010-06-23 17:20:40

5

IE永遠不會緩存它自己的X-UA兼容性設置。唯一的另一種可能性是,在設置了X-UA-Compatbile元標記之前,該網站的用戶按下了地址欄上的「兼容性視圖」按鈕。然後,您的網站的域名將顯示在本地存儲在客戶機器上的列表中。我寫了一篇關於網站所有者如何在本地存儲列表中修剪域名的博客帖子,如果/當某個站點更新爲IE8兼容版本時。 http://blogs.msdn.com/ie/archive/2009/07/01/ie-compatibility-list-pruning.aspx

8

您還可以使用下面的代碼通過config或.htaccess文件在Apache中設置X-UA兼容標頭。幸得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> 
5

我知道這個帖子是老了,但我覺得這添加到您的.htaccess文件:

Header set X-UA-Compatible "IE=edge" 

...比它添加到頁面更易於管理。

希望幫助別人。