2

我使用这三行代码来检测较小的 Internet Explorer 版本。

<!--[if lt IE 7]><html class="lt-ie8 lt-ie7 lesser-browser get-lost-ie-user please-leave-now"><![endif]-->
<!--[if IE 7]><html class="lt-ie8 ie7"> <![endif]-->
<!--[if !IE]><!--><html class="gtie7"><!--<![endif]-->

使用 javascript,如何确定是否为<html>元素启用了 lt-ie8 类?

4

6 回答 6

3

使用 JavaScript,您可以使用:

document.getElementsByTagName("html")[0].classList.contains("lt-ie8");

这给出了类的列表。如果classList没有实现,可以这样检查:

if (document.getElementsByTagName("html")[0].className.indexOf("lt-ie8") != -1)
  // The browser...

$.hasClass()如果有一个类集,或者使用 jQuery :

$("html").hasClass("lt-ie8");

所以,你可以这样使用它:

if ($("html").hasClass("lt-ie8"))
  // Class is enabled.
else
  // Class is not there.
于 2013-10-30T15:58:52.630 回答
1

我会document.body.parentNode用来获取您的<html>标签,因为不需要像其他方法那样搜索 DOM。重新实现 jQueryhasClass方法是检查 javascript 类是否在旧版浏览器中具有类的最佳方法,因为当有多个类或该类是另一个类的子字符串时,其他方法通常不起作用。

资源

function hasClass(elem, klass) {
    return (" " + elem.className + " ").indexOf(" " + klass + " ") > -1;
}

if (hasClass(document.body.parentNode, "lt-ie8")) {
    // ...
}

如果您只针对现代浏览器,那么使用classList是最佳选择。

if (document.body.parentNode.classList.contains("lt-ie8")) {
    // ...
}
于 2013-10-30T16:06:27.977 回答
0
if (document.getElementsByClassName('lt-ie8').length > 0) {
    // EDIT due to the important comment below
    //console.log("you are using a crappy browser");
    alert("you are using a crappy browser");
}
于 2013-10-30T16:00:03.477 回答
0
var isBrowserCrappy = document.getElementsByTagName('html')[0].className.indexOf('lt-ie8') !== -1;
于 2013-10-30T16:01:00.420 回答
0

尝试:

if( document.getElementsByTagName("html")[0].className == 'gtie7' )
    alert( 'html has class "gtie7"' );
于 2013-10-30T16:01:39.370 回答
0

由于您已将问题标记为jquery仅使用:

if ($(".lt-ie8").length > 0) {
    . . . do stuff . . .
}

我在 Firefox、IE7、IE9 和 Chrome 中对其进行了测试。. . 在所有这些中都可以正常工作。. .

编辑: $("html.lt-ie8").length效率更高。. .

注意:在 HTML4 和 XHTML 中,class不是<html>标签的有效属性。即使它似乎有效,您也可能需要考虑将其移至<body>标签。

于 2013-10-30T16:31:01.707 回答