1

大家好,本月早些時候在IE9發佈之後,對系統進行了一些修復。只是想知道是否有其他人遇到了與我有條件註釋和IE9相同的問題,以及是否有針對我的問題的更好的解決方法。IE9支持Javascript的條件註釋?

有條件的評論是衆所周知的作爲IE瀏覽器的解決方案一致工作。 IE9似乎打破了這一點。我正在測試一個特定於IE9的腳本(特別是document.createElement(「<輸入名稱='東西'>」);打破了IE9,但那是一個不同的問題),我需要爲IE 6做一個解決方法。我這樣做了:

<!--[if IE 6]> 
    <script type="text/javascript"> 
     var ie6 = true; 
    </script> 
    <![endif]--> 
    <!--[if IE 7]> 
    <script type="text/javascript"> 
     var ie7 = true; 
    </script> 
    <![endif]--> 

在IE9中發現,ie6和ie7都是真的。 WTF。

我的解決方法是將其更改爲條件註釋下面的邏輯相反,只是如果(!ie9plus)。

<!--[if gte IE 9]> 
    <script type="text/javascript"> 
     var ie9plus = true; 
    </script> 
    <![endif]--> 

有沒有更好的解決方法?我們是否應該在IE開發團隊中大喊大叫,打破Web調試的這個重要方面?

編輯:經過進一步測試,似乎這是一個編碼問題。不知怎的,文件編碼錯了,它打破了條件註釋。當我將註釋更改爲IE9時,我也修復了文件編碼。 IE9實際上確實支持有條件的評論。對FUD抱歉。

+0

我無法複製你的發現。在IE9中,ie6和ie7都是未定義的。如果您將頁面更改爲兼容性視圖模式,則會定義ie7,但ie6不是。 – EricLaw 2011-03-30 17:47:05

+0

我在IE9標準渲染的IE9瀏覽器模式下運行。文檔類型爲「<!DOCTYPE html PUBLIC」 - // W3C // DTD XHTML 1.0 Transitional // EN「」http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd「>' – synthparadox 2011-03-30 18:43:42

+0

我認爲你已經很好地清除了關於這個主題的任何可能的FUD。 – Will 2011-03-31 12:53:07

回答

1

IE blog說他們還在工作。但是,它們與渲染模式綁定,可能是79(前者在compat視圖中)。

IE團隊不鼓勵使用條件註釋,儘管它們適用於瀏覽器,而不是檢測功能。但是,這可能主要是Javascript的一個考慮因素。

+0

該鏈接非常有用。謝謝。 「避免有條件評論」標題之後的要點之一是「有一種情況適合使用條件註釋,這是爲了與IE6或IE7樣式表向後兼容」。我可以爭辯說這與IE6/7的固定代碼有關。我認爲它的愚蠢,他們打破了只有JavaScript條件註釋,但保留它的CSS。 – synthparadox 2011-03-30 17:22:29