我知道有关于此问题的1&000;但我无法使其发挥作用。 我只是想针对IE的所有版本(包括IE11)并给html一个特定的类,对于所有其他浏览器(firefox,opera,chrome)我希望html有另一个类甚至根本没有类。这是我的非工作代码:
<!-- [if IE] --> <html lang="en" class="legacy"><!-- [endif] -->
<!-- [if !IE] --> <html lang="en" class="modern"><!-- [endif] -->
这有什么问题?我到处都有class="legacy"
:\
针对任何IE浏览器的通用JavaScript解决方案也会做得很好!
这是用例:
我正在使用skrollr jquery插件,并且我用enquire.js为移动设备销毁它,因为它没有在浏览器上工作(并且部分不在IE11中工作......是的.. IE在任何情况下都没有得到正确的答案)我有一个看起来像这样的功能:
var $html = $("html");
function enableSkrollr() {
var s = skrollr.init({
forceHeight : false
});
}//enable
function disableSkrollr() {
var s = skrollr.init();
s.destroy();
}//disable
if ($html.hasClass("modern")) {
enquire.register("screen and (min-width: 1140px)", {
match : function() {
enableSkrollr();
},
unmatch : function() {
disableSkrollr();
}
});
};
所以我依赖modern
标记中的html
类
答案 0 :(得分:1)
要使用CSS定位IE10 +,请使用具有仅IE支持的规则的媒体查询。
示例,其中.class
是<!-- [if !IE] -->
html
标记的类:
.class {
background-color: red;
width: 150px;
height: 150px;
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* IE10+ styles go here */
.class {
background-color: gray;
}
}
继续使用条件评论来定位旧版本的IE。
编辑:您也可以检查媒体查询是否也匹配,而不是让您的javascript检测到该类:
if (document.getElementsByTagName('html')[0].className === 'modern') {
var mql = window.matchMedia("screen and (-ms-high-contrast: active), (-ms-high-contrast: none)");
mql.addListener(handleMediaQuery);
handleMediaQuery(mql);
function handleMediaQuery(mql) {
if (mql.matches) {
console.log('ie')
}
}
}
您可能希望使用jQuery
和enquire.js
代替纯JavaScript执行此操作。
答案 1 :(得分:0)
这个答案只是试图解释这有什么问题?问题的一部分......
以下是您展示的专栏:
<!-- [if IE] --> <html lang="en" class="legacy"><!-- [endif] -->
<!-- [if !IE] --> <html lang="en" class="modern"><!-- [endif] -->
在第一行中,第一部分<!-- [if IE] -->
是评论,不条件评论,因为您通常使用-->
第二部分<html lang="en" class="legacy">
是一个普通的html标记,所有浏览器再次看到,因为您关闭了第一条评论。
第三部分<!-- [endif] -->
也是一个普通的HTML注释,带有标准的开放和关闭注释字符序列。
如果您只想让IE看到该行,则需要使用IE条件注释序列
<!--[if IE]><html lang="en" class="legacy"><![endif]-->
但是,这仅适用于IE 9及更低版本 - 从IE 10开始,对条件注释的支持被删除。这可能没问题,因为可以将IE 10和IE 11视为class="modern"
,如果需要,您可以使用feature detection添加shim。
您的第二行(以<!-- [if !IE] -->
开头)也是正常评论,因此所有浏览器也会看到此<html>
标记。
获得正确的语法对你没有帮助,因为只有IE会处理条件评论并决定忽略内容,因为IE 不 !IE
@ sbeliv01发布到stackoverflow.com/a/14555015/634752的链接解释了如何执行此操作,使用条件注释关闭注释(!)