簡體   English   中英

IE兼容模式錯誤

[英]IE Compatibility Mode Bug

以下是我頁面頂部的代碼:

<!DOCTYPE html>

<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta charset="utf-8">
    <title></title>
    ...

我正在使用Paul Irish的條件注釋代碼來更容易地檢測和解決IE問題,但是這段代碼似乎本身就是一個問題。 問題是,使用條件注釋代碼強制我的頁面進入IE8兼容模式,盡管我根據MSDN指南明確聲明了ie=edge

刪除html標記周圍的條件注釋代碼可修復故障並讓IE8以標准模式呈現; 但我更願意找到一個解決方案,讓我保留條件代碼並仍然強制IE在標准合規模式下呈現。 請記住,我沒有.htaccess文件可供使用,因為此站點使用的是windows / asp設置。

開頭的空注釋修復了它。

<!--[if IE_NEEDS_THIS]><![endif]-->
<!DOCTYPE HTML>
<!--[if lt IE 9]><html class="lt-ie9"><![endif]-->
<!--[if gt IE 8]><!--><html class="gt-ie8"><!--<![endif]-->
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title>--</title>

但是不要在元標記周圍添加條件注釋。 IE10將陷入怪癖。

我發現如果文檔開頭的注釋,那么元標記也可以在注釋中。

無論如何它仍然有效,然后它是有效的HTML5!

<!–[if IE]><![endif]–>
 <!DOCTYPE html>
 <html lang="de">
 <head>

<title></title>
 <!–[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><![endif]–>

在這種情況下,像IE8和IE9但不是content="IE=Edge,Chrome"

所以請僅限content="IE-Edge"

最佳答案是死鏈接。

這些Boilerplate問題幫助我:

https://github.com/h5bp/html5-boilerplate/issues/125

https://github.com/h5bp/html5-boilerplate/issues/1187

getsetbro的代碼片段是正確的,但這些鏈接將提供有關原因的更多信息。

你說:

請記住,我沒有.htaccess文件可供使用,因為此站點使用的是windows / asp設置。

我認為這意味着你可以通過將X-UA-Compatible指定為HTTP響應頭而不是元標記來解決問題。

如果您使用的是經典ASP,則可以在文件頂部使用它並刪除元標記:
(我猜你的意思是基於你的個人資料中缺少ASP.NET相關內容的經典ASP)

Response.AddHeader "X-UA-Compatible", "IE=edge,chrome=1"

這個答案基於我對自己喜歡的太多猜測,所以它可能顯然不起作用。

此外,這個問題可能有所幫助:

IE8標准模式元標記

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM