我從我的研究中瞭解到,IE8的確很煩人,比如將本身強制進入本地Intranet主機和本地IP範圍的IE7模式。我從previous question瞭解到無法使用條件語句,無論IE8是以IE8還是IE7模式呈現,它仍將僅使用條件語句<!--[if IE 8]>
。確定是否在使用條件的IE8兼容模式
因爲這個問題被問前一段時間(在IE8測試階段由事物的外表),如果這種情況已經改變或我想知道是否有使用條件語句,以確定是否IE8在兼容模式下任何其他方式。
謝謝!
我從我的研究中瞭解到,IE8的確很煩人,比如將本身強制進入本地Intranet主機和本地IP範圍的IE7模式。我從previous question瞭解到無法使用條件語句,無論IE8是以IE8還是IE7模式呈現,它仍將僅使用條件語句<!--[if IE 8]>
。確定是否在使用條件的IE8兼容模式
因爲這個問題被問前一段時間(在IE8測試階段由事物的外表),如果這種情況已經改變或我想知道是否有使用條件語句,以確定是否IE8在兼容模式下任何其他方式。
謝謝!
不,你不能使用條件。
做到這一點的最好方法是使用document.documentMode屬性,如鏈接Pekka發佈中所述。 How can I detect if IE8 is running in compatibility view?
最終,我選擇了混合兩種常見的策略來處理這個bug。
我創建了一個覆蓋CSS文件,我使用條件註釋導入。但是,在IE 8或9的情況下,這種覆蓋看起來不太好,所以我將'強制IE強制進入最新的渲染模式'標題開關中,如下所示。
<!--[if lte IE 7]>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="stylesheet" type="text/css" href="/Content/IE7Overrides.csss" />
<![endif]-->
這提供了IE7的一個體面的故障保護,但強制IE8和IE9顯示它在最新的瀏覽器,這將正確顯示基於CSS的表。
只要您點擊條件註釋,IE就會確定它所處的渲染模式。因此,嵌套元標記將不起作用,並且不會將IE設置爲邊緣模式。您可以在HTML5BP的Github Repo上看到關於此問題的非常長的評論主題:https://github.com/h5bp/html5-boilerplate/issues/378 – calvinf 2013-04-16 00:57:06
@calvinf:奇怪,因爲它已在生產中工作了好幾個月。還有其他一些事情正在磨合這個問題。 – Jeff 2013-04-16 12:26:34
是通過HTTP頭設置X-UA兼容的頁面嗎?此外,沒有X-UA兼容的頁面通常會以邊緣模式呈現,除非您的頁面位於Microsoft的IE兼容性視圖列表(或Intranet站點)之一。 – calvinf 2013-04-16 23:06:34
可能重複[如何檢測IE8是否在兼容視圖中運行?](http://stackoverflow.com/questions/1208837/how-can-i-detect-if-ie8-is-running-in -compatibility-view) – 2010-06-29 11:21:04
不是因爲我特意詢問使用條件。 – Konrad 2010-06-29 11:23:02