首页 文章

为什么Internet Explorer 11即使在模拟Internet Explorer 8文档模式时也不尊重条件注释?

提问于
浏览
111

我正在使用新的Internet Explorer 11开发人员工具将文档模式切换为"8",但条件注释仍然被忽略,即它们没有被正确解析并且表现得像普通注释 . 因此,浏览器不会请求/加载条件注释中的任何引用文件 .

为什么会这样?这是一个错误吗?

如果您认为这确实是一个需要修复的错误,请进入并说您也可以在针对此问题报告的Microsoft错误报告中重现此问题:
Conditional comments do not work when emulating document modes via F12 Developer Tools .

Update: 已报告此问题已在上述错误报告中修复 .

8 回答

  • 7

    AccordingJacob Rossi [MSFT]

    这应该在上周发布的IE11的Update 1中修复 .

    那张贴于2014年4月22日 .

    在自己运行一些测试时,看起来确实已经修复了,而且所有测试都运行得很顺利,以便测试有史以来最令人惊叹的浏览器...... Internet Explorer!

  • 20

    我刚尝试在Windows 7的Internet Explorer 11中使用它来确保我为Internet Explorer 8及以下(通过条件注释)创建了我使用的HTML5语义元素,浏览器只是忽略它们 . -_-

    这个功能在Internet Explorer 10中运行得非常好,而微软只是不得不修补它,不是吗?

    <!--[if lte IE 8]><script src="ie8-html5.js"></script><![endif]-->
    

    除此之外,我实际上正在享受Internet Explorer,这是一个改变 .

  • 17

    这对我有用,似乎是最优雅/最简单的修复(Internet Explorer 10Internet Explorer 11我猜是唯一支持 -ms-high-contract 的浏览器):

    @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
       /* IE10+ specific styles go here */
    }
    
  • 7

    我最近遇到了同样的问题 . 我还发现一些条件评论有效:

    • gtlt 工作正常

    • gtelte 从未奏效

    因此,一种可能的解决方案是更改条件语句以使用 gtlt 运算符 .

    我觉得更有用的另一种选择是使用像browserstack这样的服务 .

  • 3

    我有另一个解决方案 .

    打开Internet Explorer 8兼容模式的Internet Explorer 11包含字符串'MSIE 8.0',因此:

    (PHP示例)

    if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0') !== false) {
        $head[] = sprintf('<link rel="stylesheet" href="ie8.css" />');
    }
    
  • 0

    我遇到了同样的问题 - 整个上午它让我疯狂 . 我添加了Modernizr,并选择了所有选项,包括yepnope.js .

    所以现在我的测试看起来像这样:

    Modernizr.load({
                test: Modernizr.canvas,
                nope: ['Content/Site-ie-8.min.css', 'Content/font-awesome-ie7.min.css']
    });
    

    在这种情况下,我测试画布(在Internet Explorer 9之前不支持),所以我加载我的条件内容 . 现在,在Internet Explorer 11开发人员工具中切换浏览器模式时,此功能可用

  • 2

    我没有在这里看到它,但是在这个bug report中注意到,如果更改兼容性视图设置,条件注释将按预期工作 . 所以:

    • 在IE11中,单击"Tools"

    • 兼容性视图设置

    • 输入URL并单击“添加”

    现在似乎在我的localhost上工作正常 . 我没有对此进行过广泛的测试,但也许它可以帮到某些人 .

  • 28

    一些条件注释正在起作用,例如' gt ' and ' lt ',但是例如 <!--[if IE 8]> 无效 . 对于想要尝试他们的网页在不同版本的Internet Explorer浏览器上看起来如何的开发人员来说,这肯定是不方便的,但这并非全是坏消息 .

    虽然条件评论不是't working, you can still test how your webpage looks in each of the Internet Explorer versions by appending the stylesheets one at a time: let',但是你有一个Firefox,Chrome,Internet Explorer 10和Internet Explorer 11的样式表,名为' screen.css ', and another stylesheet ONLY for Internet Explorer 9 called ' screen-ie9.css ' and another one ONLY for Internet Explorer 8 called ' screen-ie8.css ' .

    要仅针对Internet Explorer 9测试您的网页,您可以执行以下操作:

    <link rel="stylesheet" href="path/css/screen.css"     type="text/css" />
    <link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />
    

    在F12开发人员工具的“仿真”部分中,将“文档模式”设置为“9”,将“用户代理字符串”设置为“Internet Explorer 9” . 文档模式是Internet Explorer 9使用的标准,用户代理字符串是浏览器本身 .

    P.S:我'm assuming that the ' screen.css ' is your base stylesheet which is the reason I am calling it first than 1127859 the Internet Explorer 9 fixes later by calling ' screen-ie9.css '秒 .

    通过执行此操作,您可以“确定”(我必须使用VM进行测试,以便在Internet Explorer 9浏览器上查看您的网页时写下'确定'而无引号) . 当您在Internet Explorer 9上完成测试和样式设置,并且想要使用Internet Explorer 8进行测试时,您可以通过替换它来轻松地执行相同的操作:

    <link rel="stylesheet" href="path/css/screen-ie9.css" type="text/css" />
    

    有了这个:

    <link rel="stylesheet" href="path/css/screen-ie8.css" type="text/css" />
    

    因此,这只是微软方面的MINOR不便之处,但新的F12开发人员的工具提供了许多令人惊叹的功能,这使得这不是什么大不了的事 .

相关问题