2014-10-20 49 views
0

我在我的html文件中寫了一些條件註釋並使用file://path/test.html打開它。它看起來很好。我啓動了我的應用程序服務器,並將我的IE 8瀏覽器指向http://myserver.com/ap/test.html。結果是不同的。任何人都可以解釋爲什麼會發生這種情況,可能會做些什麼呢?爲什麼當用文件打開頁面時IE條件註釋呈現不同:

<html> 
<body>  
conditional 
<p> 
<!--[if IE 8 ]> 
    <p>Only IE 8 will see this</p> 
<![endif]--> 

<!--[if gt IE 7 ]> 
    <p>Only gt IE 7 will see this</p> 
<![endif]--> 

<!--[if IE]> 
    <p>IE sees this.</p> 
<![endif]--> 

<!--[if ! IE]>--> 
    <p>not IE</p> 
<!--<![endif]--> 

<!--[if (gt IE 8)|(!IE)]><!--> 
    <p>Every one except IE 8 will see this (gt IE 8)|(!IE)</p> 
<!--<![endif]--> 

<p>after conditional 
</body> 
</html> 

從IE 8日開幕的文件的源:在另一個選項卡

conditional 

Only IE 8 will see this 

Only gt IE 7 will see this 

IE sees this. 

after conditional 

用相同的瀏覽器指向應用服務器:

conditional 

IE sees this. 

after conditional 

我的目標是在IE 8瀏覽器上插入一個標題,其他標題插入一個標題。所以這個問題的替代解決方案將受到歡迎

回答

0

從IE10開始,條件註釋是no longer supported,不應該使用。

爲獲得最佳效果,頁面中的第一行應爲<!DOCTYPE html>;這將允許老版本的IE使用以前被稱爲「標準模式」的東西,並啓用任何standards support可用於該特定版本的IE。

通常,使用feature detection可以更好地完成此類任務,而不是瀏覽器檢測。條件註釋是舊版IE所支持的專有功能;當不再支持所有功能時,依賴專有功能的代碼往往會在不發出警告的情況下中斷。

如果沒有你想要解決的底層問題的更清晰的概念,很難知道要建議什麼,但給出一些絕對只適用於IE的場景,沒有一個更簡單,更優雅的解決方案,這裏的檢測IE8的一種方式,它不依賴於專有功能:

var isIE8 = window.document.documentMode == 8; 

與有條件的意見(其失敗時,他們不支持),該代碼將返回一個值,即使documentMode屬性不可用或在未來版本的IE中刪除。

希望這有助於...

- 蘭斯