以下是我页面顶部的代码:
<!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文件。
答案 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"
这个答案是基于我喜欢的太多猜测,所以它可能显然不起作用。
此外,这个问题可能帮助:
答案 4 :(得分:0)
最佳答案是死链接。
这些Boilerplate问题帮助了我:
https://github.com/h5bp/html5-boilerplate/issues/125
https://github.com/h5bp/html5-boilerplate/issues/1187
getsetbro的代码片段是正确的,但这些链接将提供有关原因的更多信息。