2012-10-11 72 views
21

這讓我瘋狂。無論我嘗試什麼,IE9總是使用IE7標準文檔模式

無論我嘗試什麼,Internet Explorer都切換到IE7標準文檔模式。我嘗試使用HTML5 boilet板和HTML5重置(其自己的網站進入怪癖模式)嘗試剝離我的代碼,嘗試讓它行爲起來。

我還補充說,應該強制IE到它的最新版本,不管是什麼meta標籤,但一切所做的就是根據W3C讓我加價無效。

這就是我的;我錯過了什麼?

<!doctype html> 

<!--[if IE 7 ]> <html class="ie7> <![endif]--> 
<!--[if IE 8 ]> <html class="ie8> <![endif]--> 
<!--[if gt IE 8]><!--><html><!--<![endif]--> 

<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <title></title> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<body> 
    <p>Test text</p>   
</body> 
</html> 

EDIT

我有通過下面的建議找到了解決辦法。這個建議沒有奏效,但它確實使我得到了答案。這可能不是100%適合每個人,因爲它在body標籤上強加一個類而不是html,但它適用於我,似乎適用於IE。

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<!--[if IE 7 ]> <body class="ie7> <![endif]--> 
<!--[if IE 8 ]> <body class="ie8> <![endif]--> 
<!--[if gt IE 8]><!--><body><!--<![endif]--> 
<p>Test text</p>   
</body> 
</html> 
+0

這在我的Windows7上的IE9中工作得很好。它顯示IE9標準模式是頁面默認和正在使用的模式。您的IE9是否將頁面默認顯示爲IE7? – andyb

+0

您的網站是否在IE設置的「Intranet區域」? –

+0

只是出於好奇,是開發人員的工具說,頁面默認是IE9標準,但仍然使用IE7?這是發生了什麼,我正在嘗試你的解決方案,但錯誤是不一致的,所以我不知道如果它修復它... –

回答

10

我必須通過早期發現建議的解決方案。這個建議沒有奏效,但它確實使我得到了答案。這可能不是100%適合每個人,因爲它在body標籤上強加一個類而不是html,但它適用於我,似乎適用於IE。

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <link rel="stylesheet" href="css/style.css"> 
</head> 
<!--[if IE 7 ]> <body class="ie7> <![endif]--> 
<!--[if IE 8 ]> <body class="ie8> <![endif]--> 
<!--[if gt IE 8]><!--><body><!--<![endif]--> 
<p>Test text</p>   
</body> 
</html> 

編輯

其實我已經使用上述,現在我的IE特定類添加到html元素,如HTML5BP建議停止。

另外請注意,您可能希望從元標記刪除chrome=1爲Chrome Frame的被快死光了。儘管對於那些仍然在使用它的罕見情況,但沒有傷害。

另一件事來檢查,我不認爲已經提到是什麼可能是在IE中最讓人頭疼的設置狀態 - 「在兼容性視圖中顯示Intranet站點」。如果您運行一個名稱類似http://mytestserver:8888的測試服務器,無論您在文檔頭中做什麼,IE都會認爲它是Intranet站點和切換模式。

此設置在我公司的組策略爲我們古老的SharePoint內聯網啓用實際上依賴於它。非常適合那些舊垃圾,但對於實際上要遵守標準的新東西來說很糟糕。

Tools > Compatibility View Settings中關閉此功能,並準備好在您有任何遺留站點時手動切換到該功能。

10

this thread

的X-UA兼容meta標籤必須元素中的標題後直接出現。沒有其他元標記,CSS鏈接和js腳本調用可以放在它之前。

+2

我試着你的建議,不幸的是它沒有任何區別。但是,它的確讓我找到了答案。我正在使用條件註釋在我的'html'標籤上添加一個類,這樣我就可以將我的CSS調整爲舊版IE。事實證明,條件註釋不能在'head'之前使用,所以我只是將我的條件註釋移動到body標籤。它工作正常,我仍然可以自定義我的CSS。謝謝。 –

+0

@AlanShortis請將其作爲您自己問題的答案發布。這是正確的正式方式。 –

+0

@Markus完成。再次感謝您指引我朝着正確的方向發展。 –

8

有時候IE的行爲嚴重額外內部網站,迫使他們到兼容模式,無論在頭部<meta>線。但是,您可以使服務器發送一個頭蠻力IE中加入表現以下的web配置:

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <add name="X-UA-Compatible" value="IE=Edge" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 
+0

感謝此 - 不是解決這一特定問題的方法,但我確實在地平線上有一些Intranet工作,並確保使用此工具。 –

2

我也有ie10強制IE7標準模式本地主機上的網站的這個問題。 添加/使用名稱中包含點的虛擬主機(local.x)解決了該問題。

+0

這工作就像一個魅力。 –

+0

影響呈現的Intranet區域上的信息:http://msdn.microsoft.com/en-ca/library/jj676914(v=vs.85).aspx –

0

,因爲它關係到當地的網站被設置爲兼容模式斯圖爾特貼爲我工作的鏈接。一旦我從兼容模式列表中刪除了Intranet網站,則根據元標記頁面轉到正確的IE = 9模式。

3

保持

<!doctype html> 

是網頁的源文件的第一行和X-UA兼容meta標籤必須tilte標籤的相鄰的下一個兄弟。

<meta charset="utf-8"> 
<title></title> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
0

我用以下時,IE8在IE7標準模式文件,儘管一切我試圖渲染來解決這個問題。就在DOCTYPE聲明前補充一點:

<!--[if IE ]><![endif]--> 

所以生成的HTML看起來像這樣:

<!--[if IE ]><![endif]--> 
<!doctype html> 
<!--[if IE 7]><html class="lt-ie8"><![endif]--> 
<!--[if IE 8]><html class="lt-ie9"><![endif]--> 
<!--[if gt IE 8]><!--><html><!--<![endif]--> 
<head> 
    <title>Page title here</title> 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge"/> 

別人會對評論爲什麼這似乎工作 - 這是對我來說是個謎。

相關問題