Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如果IE条件不起作用_Html_Internet Explorer_Comments_Conditional - Fatal编程技术网

Html 如果IE条件不起作用

Html 如果IE条件不起作用,html,internet-explorer,comments,conditional,Html,Internet Explorer,Comments,Conditional,我一直在努力让注释条件生效,结果我一点运气都没有。有人能解释一下我做错了什么吗 这是我的密码: <!--[if IE 10]> IE IS VERSION 10<br /> <![endif]--> <!--[if !IE]><!--> Browser is not IE <!--<![endif]-->

我一直在努力让注释条件生效,结果我一点运气都没有。有人能解释一下我做错了什么吗

这是我的密码:

        <!--[if IE 10]>
            IE IS VERSION 10<br />
        <![endif]-->
        <!--[if !IE]><!-->
            Browser is not IE
        <!--<![endif]-->
        <!--[if lt IE 9]>
            IE IS LESS THAN VERSION 9<br />
        <![endif]-->

浏览器不是IE
正在发生的事情令人沮丧地前后矛盾。当我在IE8中加载带有上述代码的页面时,它会收到消息“IE低于版本9”很好,对吗?否,因为当我在IE10中加载同一页面时,我收到消息“浏览器不是IE”


为什么它认为IE10不是IE浏览器?!我一直在一页接一页地爬行,但从我的发现来看,我的代码似乎没有任何问题

IE 10删除了条件注释

您可以在javascript中执行类似的操作,如下所示:

if ($.browser.msie && $.browser.version === 10) {
    // stuff here (like adding an IE10 class to the body or html tag
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* Put your IE-only styles here. Works for IS 10 & IE 11*/
}

CSS解决方案:

如果您只想在浏览器上应用CSS,则可以尝试:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* Put your IE-only styles here. Works for IS 10 & IE 11*/
}
JavaScript解决方案:

IE 10不支持条件语句

。它将把条件注释视为常规HTML注释,并完全忽略

使用特征检测库(例如,而不是浏览器检测)

在中找到了解决方案:

解决办法是:

if (Function('/*@cc_on return document.documentMode===10@*/')()) {
    alert('IE 10');
} else {
    alert('Not IE 10');
}

  • 不需要条件注释
  • 即使在压缩/处理过程中也能正常工作
  • InternetExplorer11中未添加ie10类
  • 更有可能在InternetExplorer10兼容模式下运行InternetExplorer11时按预期工作
  • 不需要独立的脚本标记(可以直接添加到头部的其他JavaScript代码中)
  • 不需要jQuery进行测试

尝试在页面顶部附近添加以下元标记以选择Internet Explorer 9行为:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">

这是因为在InternetExplorer10标准和怪癖模式中删除了条件注释,以提高互操作性和对HTML5的遵从性。这意味着条件注释现在被视为常规注释,就像在其他浏览器中一样。此更改可能会影响专门为Windows Internet Explorer编写的页面或使用浏览器嗅探来改变其在Internet Explorer中行为的页面。

IE 10、11及以上版本不再支持条件注释


看到这个答案:

我很惊讶没有人在一个只有css的解决方案中添加。如果您只想使用css,请使用如下语句:

if ($.browser.msie && $.browser.version === 10) {
    // stuff here (like adding an IE10 class to the body or html tag
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* Put your IE-only styles here. Works for IS 10 & IE 11*/
}
这样,您就不必依赖jquery或任何html标记。只要在css中发布它,你就可以开始了

现在,它是黑客吗?很可能。这取决于使用microsoft高对比度标记,但由于没有其他浏览器使用ms标记,因此您应该可以继续使用

最后,查看以下页面了解更多信息:


是的,但这要求我包括JQUERY:(好吧,如果在IE10上删除了条件,你没有太多的选项,是吗?不幸的是,这个函数在jQuery 1.9中被删除了。
jQuery
不是
javascript
的同义词。唯一有效的代码是代码段中的最后一个。IE10不支持条件注释,因此
[如果IE 10]
不起作用。只有IEs<10支持条件注释,因此
[if!IE]
是无用的。正如您在发布的代码中所看到的,在
!IE
条件中有一个“语法错误”,因此文本
浏览器不是IE
应该在每个浏览器中实际显示…我讨厌Internet Explorer“跨浏览器最佳实践”链接已断开。谢谢Maximus,很棒的技巧………我讨厌你让我节省了这么多时间尝试破解IE 11愚蠢的Flexbox实现-谢谢。这到今天为止没有任何效果。