在IE8和其他带有javascript的浏览器中获取正文类的标准解决方案是什么
What is the standard solution to get body class at IE8 and other browsers with javascript
我需要在 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"
开头添加一个空格,因为类用空格分隔。
相关文章:
- 在IE8和其他带有javascript的浏览器中获取正文类的标准解决方案是什么
- 获取IE版本+将类添加到正文
- JavaScript:获取搜索文本在正文上的滚动位置
- jQuery/JS正在获取导航菜单,以便在单击正文时隐藏
- 如何在tizen网络应用程序上获取消息正文
- 在 chrome 中获取 iframe 正文 html 内容
- 无法获取在 JS 中创建的表(或正文中的任何内容)以显示在浏览器中
- 添加事件处理程序以获取按钮单击LeadPage,我可以在其中对正文进行编码
- 使用 Java 脚本获取 HTML 正文中所有文本框的名称和 ID
- 如何在 Node.js 中获取 Twilio SMS 正文文本
- 如何从 Nodejs 中的 post 请求中获取正文
- 如何获取网络浏览器窗口正文的确切高度
- Gmail:从扩展程序中获取邮件正文
- uiwebview JavaScript HTML 仅获取面向用户的正文文本
- 使用 javascript 和循环获取所有正文元素
- Javascript 从 iframe 内部的页面获取正文标签
- Redux 获取正文不使用没有 CORS 模式
- 使用边距获取正文元素的左偏移量和顶部偏移量:自动
- 使用 JavaScript 获取消息正文 (Thunderbird)
- 使用 Gmail API 获取带有格式的邮件正文