如果访问者使用的是Internet Explorer(IE),我想从指定的ID中删除一个类。
首先,我使用以下JavaScript语法为使用IE的访问者创建了一个重定向,它运行得很好:
<script language=javascript>
if ((navigator.userAgent.match(/IE/i))) {
document.location = "http://www.somepage.com/IE_page.html";
}
</script>
但我想采取不同的策略。我希望能够删除(或者可能添加)类到ID,而不是重定向到另一个页面。
我创造但未奏效的是:
<script language=javascript>
if ((navigator.userAgent.match(/IE/i))) {
$('#someIdHere').removeClass('someClassHere');
}
</script>
我在此脚本上方有必要的jQuery链接。
这个jQuery语句我缺少什么语法?
答案 0 :(得分:3)
您需要将代码包装在$(document).ready()
块中,否则代码执行时页面上将不存在#someIdHere
元素。
$(document).ready(function () {
if ((navigator.userAgent.match(/IE/i))) {
$('#someIdHere').removeClass('someClassHere');
}
});
..或者,您可以将代码包含在页面底部(</body>
之前)而不是<head>
。
另请注意,您冒着将非IE浏览器与正则表达式模式匹配的风险。像/\bMSIE\b/i
这样的东西更精确。
FWIW,关于在language=javascript
代码中使用<script />
,请参阅HTML Script tag: type or language (or omit both)?。
答案 1 :(得分:1)
javascript中有一种方法可以检测,即使用条件注释。这不是我的工作,我只是从Github张贴James Padolsey的片段:
// ----------------------------------------------------------
// A short snippet for detecting versions of IE in JavaScript
// without resorting to user-agent sniffing
// ----------------------------------------------------------
// If you're not in IE (or IE version is less than 5) then:
// ie === undefined
// If you're in IE (>=5) then you can determine which version:
// ie === 7; // IE7
// Thus, to detect IE:
// if (ie) {}
// And to detect the version:
// ie === 6 // IE6
// ie > 7 // IE8, IE9 ...
// ie < 9 // Anything less than IE9
// ----------------------------------------------------------
// UPDATE: Now using Live NodeList idea from @jdalton
var ie = (function(){
var undef,
v = 3,
div = document.createElement('div'),
all = div.getElementsByTagName('i');
while (
div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
all[0]
);
return v > 4 ? v : undef;
}());
您可以采用的另一种方法是直接在HTML文件中使用条件注释,而不需要直接在JS中检测任何内容(在我看来这更为可取):
<!--[if lt IE 7 ]> <html class="msie ie6"> <![endif]-->
<!--[if IE 7 ]> <html class="msie ie7"> <![endif]-->
<!--[if IE 8 ]> <html class="msie ie8"> <![endif]-->
<!--[if IE 9 ]> <html class="msie ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->
使用此代码段替换文件中的HTML标记。 IE将呈现与其版本对应的标记。然后,您可以在html标记上查找类msie
的存在。
请注意,这两个解决方案都不适用于IE10,因为此版本不再支持条件评论。