0

IE 10+不支持條件語句。這使IE 7-11的開發變得棘手,因爲IE10-11解析條件語句中的內容而不是忽略它。例如:將IE條件語句替換爲IE 10+

<!--[if (IE 9) | (IE 8)]><!--> 
    // Code here will get rendered by IE10 & IE11 
<!--<![endif]--> 

所以,如果我想有一些代碼,將只得到呈現在IE 8 & 9,然後是一些代碼,將在IE10得到渲染,只有IE11 &火狐,我該怎麼辦它?

編輯:請注意,我不是在說這裏的風格;我想在我的網頁上支持重大的結構變化。例如:

<!--[if (IE 9) | (IE 8)]><!--> 
    <div> 
     <div> 
     Test 
     </div> 
    </div> 
<!--<![endif]--> 

<!--[if (IE 10]><!--> 
    <div> 
     <h3>Test</h3> 
    </div> 
<!--<![endif]--> 
+0

我有點困惑。如果你想要一些代碼由IE10 +和其他瀏覽器執行,是不是你有答案? – BoltClock

+0

不,因爲我只想在IE8 + 9中執行一個代碼塊,並且IE10 + 11會忽略該代碼塊。而另一個只針對IE10 + 11,被IE8 + 9忽略。 –

+0

現在條件註釋已過時:[MSDN](http://msdn.microsoft.com/zh-cn/library/ie/hh801214%28v=vs.85%29.aspx)。但是,爲什麼你想要一些代碼具有一些特定的IE10/IE11(而不是像FF/Chrome/...一樣)? –

回答

3

我得到了這個在我的工作。它看起來像條件​​語句的格式已關閉。

<!--[if (IE 9) | (IE 8)]> 
    Code here will not get rendered by IE10 & IE11 
<![endif]--> 

此外,您正在渲染什麼類型的代碼,js,css?

+0

我希望IE10&11不顯示在該條件中包裝的代碼。 –

+1

@JohnSmith請再次閱讀他的答案**清楚**。你做錯了什麼 –

+0

@John Smith:FYI,答案已經被編輯。看起來我們都有些困惑。 – BoltClock

2

如果只想IE8/9時至一切呈現一組不同標記的其他(意爲IE10 +接收相同的代碼,所有其他瀏覽器),這是完全可行的:

  • 您需要隱藏所有其他瀏覽器的(IE 9) | (IE 8)條件。這意味着讓註釋部分封裝整個代碼塊,而不僅僅是條件表達式。

  • 您需要允許所有其他瀏覽器查看其他條件,同時防止IE8/9看到該部分。

    (IE 10)部分沒有問題; IE8和IE9會知道它們不滿足條件,因此即使它沒有被註釋掉也不會呈現標記,而IE10將永遠不會看到條件(無論哪種版本都不會),因此它將呈現標記,因爲它不被隱藏在評論中。

因此:

<!--[if (IE 9) | (IE 8)]> 
    <div> 
     <div> 
     Test 
     </div> 
    </div> 
<![endif]--> 

<!--[if (IE 10)]><!--> 
    <div> 
     <h3>Test</h3> 
    </div> 
<!--<![endif]-->