如何使用javascript检测html类?

时间:2013-10-30 15:57:14

标签: javascript jquery html internet-explorer

我使用这三行代码来检测较小的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类?

6 个答案:

答案 0 :(得分:2)

使用JavaScript,您可以使用:

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

这给出了类列表。如果未实现classList,则可以通过以下方式进行检查:

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

如果有类集,请使用jQuery的$.hasClass()

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

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

if ($("html").hasClass("lt-ie8"))
  // Class is enabled.
else
  // Class is not there.

答案 1 :(得分:1)

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

Source

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")) {
    // ...
}

答案 2 :(得分: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");
}

答案 3 :(得分:0)

var isBrowserCrappy = document.getElementsByTagName('html')[0].className.indexOf('lt-ie8') !== -1;

答案 4 :(得分:0)

尝试:

if( document.getElementsByTagName("html")[0].className == 'gtie7' )
    alert( 'html has class "gtie7"' );

答案 5 :(得分:0)

由于您已使用jquery标记了问题,只需使用:

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

我在Firefox,IE7,IE9和Chrome中测试过它。 。 。在所有这些方面都很好。 。

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

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