我使用这三行代码来检测较小的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类?
答案 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类是否在旧版浏览器中具有类的最佳方法,因为当存在多个类或者该类是另一个类的子字符串时,其他方法通常不起作用。
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>
标记。