2011-02-24 116 views
7

这是在我的网页的顶部代码:IE兼容模式错误

<!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的问题,但是这个代码似乎本身就是一个问题。问题是,尽管我根据MSDN guidelines明确声明ie=edge,但使用条件注释代码强制我的页面进入IE8兼容模式。

卸下条件注释代码周围html标签修复了故障,并让IE8在标准模式呈现;但我宁愿找到一个解决方案,让我保持有条件的代码,仍然迫使IE浏览器在标准兼容模式下呈现。请记住,我没有使用.htaccess文件,因为这个网站使用的是windows/asp设置。

回答

0
+0

但似乎他仍然可以尝试将它放在标记上?不确定这是否受到相同错误的影响。 – 2011-02-25 01:54:03

+0

链接无效... – nebulousGirl 2012-07-10 12:14:30

+2

这可能是更新后的链接:https://github.com/h5bp/html5-boilerplate/issues/1187这可能与以下内容有关:https://github.com/h5bp/html5-boilerplate/issues/378 – 2012-10-19 17:26:25

0

你说:

请记住我没有的.htaccess 文件作为该网站使用使用 窗口/ ASP的设置。

我认为,这意味着你可以围绕这个问题得到通过指定X-UA-Compatible作为HTTP响应头,而不是作为一个meta标签。

如果您使用传统的ASP,你可以在你的文件的顶部使用,并摆脱了元标记:
(我猜你的意思是经典ASP基础上,缺乏ASP的。在个人资料中扣除相关的东西)

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

这个答案是基于太多的猜测,我喜欢,所以它可能平淡无法正常工作。

而且,这个问题威力帮助:

IE8 standards mode meta tag

2

我发现如果在文件开头的注释,然后meta标签也可以是一个注释。

它的工作原理呢,然后它是有效的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"

+0

我喜欢把meta放在只有IE的条件注释中,因为meta仅适用于IE。 – nebulousGirl 2012-07-10 12:15:44

+0

放入条件将不起作用。它不兼容。 – egr103 2012-09-11 15:16:35

+0

有一个写在这里http://nicolas.gallagher.com/better-conditional-classnames-for-hack-free-css/但是...我有点担心,未来即版本,甚至可能只是其他浏览器会乱如果有任何事情发生在文档类型之前。 – user1010892 2013-01-16 10:25:56

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将陷入怪癖。