我需要在 Internet Explorer 8 及更低版本上获取身体类,我正在使用 javascript classList 方法,但它似乎不适用于旧的 IE 浏览器 (http://caniuse.com/#search=classList),新浏览器和旧浏览器是否有任何标准解决方案?
var b = document.body;
// check body class
if (!b.classList.contains('ie-8')) {
b.classList.add('ie-block');
// removing DOM main container
b.removeChild('mainContainer');
}
谢谢你的帮助。
标准 .className
属性,该属性包含以空格分隔的类列表。
您的代码中还有一个错误:b.removeChild('mainContainer');
行是错误的:removeChild
方法将Element
作为参数,而您正在为其提供一个字符串。您应该首先获取该元素(我认为是带有id="mainContainer"
的元素),然后正确删除它。
如上所述,您可以检查主体的className
是否包含所需的类并因此运行,这是一个工作示例:
var b = document.body;
if (~(" "+b.className+" ").indexOf(" ie-8 ")) {
b.className += " ie-block";
b.removeChild(document.getElementById("mainContainer"));
}
附加说明:
- 我将这些空格添加到
className
中,因为 classNames 通常不以空格开头/结尾,但它们用空格分隔类,因此您需要检查" ie-8 "
(带有前导空格),因为匹配它而不带空格可能会导致错误的标识(例如,像"some-ie-8-thing"
这样的类会匹配)。 - 我之所以使用
~(...).indexOf
,是因为只有当indexOf
返回的数字为-1
时,~
运算符才会返回0
(即false
),这意味着仅当字符串包含给定的子字符串时,压号才会计算为 true。 - 我还在
" ie-block"
开头添加一个空格,因为类用空格分隔。