IE兼容模式错误

时间:2011-02-24 22:46:24

标签: html internet-explorer html5 ie8-compatibility-mode

以下是我页面顶部的代码:

<!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 guidelines明确声明了ie=edge

删除html标记周围的条件注释码可修复故障并让IE8以标准模式呈现;但我更愿意找到一个解决方案,让我保留条件代码并仍然强制IE在标准合规模式下呈现。请记住,由于此站点使用的是windows / asp设置,因此我没有.htaccess文件。

5 个答案:

答案 0 :(得分:7)

开头的空注释会修复它。

<!--[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将陷入困境。

答案 1 :(得分:2)

我发现如果文档开头的评论,那么元标记也可以在评论中。

无论如何它都有效,然后它是有效的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"

答案 2 :(得分:0)

答案 3 :(得分:0)

你说:

  

请记住,我没有.htaccess   要使用的文件,因为此网站正在使用   windows / asp setup。

我认为这意味着您可以通过将X-UA-Compatible指定为HTTP响应标头而不是元标记来解决问题。

如果您使用的是经典ASP,则可以在文件顶部使用此功能并删除元标记:
(我猜你的意思是基于你的个人资料中缺少ASP.NET相关内容的经典ASP)

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

这个答案是基于我喜欢的太多猜测,所以它可能显然不起作用。

此外,这个问题可能帮助:

IE8 standards mode meta tag

答案 4 :(得分:0)

最佳答案是死链接。

这些Boilerplate问题帮助了我:

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

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

getsetbro的代码片段是正确的,但这些链接将提供有关原因的更多信息。