如果浏览器不是IE或IE 9+,我想要运行一段Javascript。如果浏览器是IE8或更低版本,则应运行另一段Javascript。
我尝试使用Conditional Comments:
<!--[if (!IE)|(gte IE 9)]>
<script type="text/javascript"> /* code 1 */ </script>
<![endif]-->
<!--[if (lt IE 9)]>
<script type="text/javascript"> /* code 2 */ </script>
<![endif]-->
但是IE6和IE7仍在执行代码1 。 Firefox正在执行代码2 ...
请不要jQuery。
编辑:实际上,我的条件表达式是错误的。但仍然采用了所选答案中提出的特征检测。
答案 0 :(得分:5)
从您的评论中,听起来您只是想确定是否可以使用document.getElementsByClassName()
。如果是这种情况,您可以使用如下特征检测:
if (document.getElementsByClassName) {
// code here that uses getElementsByClassName
} else {
// code here that doesn't use getElementsByClassName
}
安装polyfill可能更干净,因此您可以在旧版本的IE中使用它而无需先检查。您可以通过Google搜索找到其中的一些。这是one:
// Add a getElementsByClassName function if the browser doesn't have one
// Limitation: only works with one class name
// Copyright: Eike Send http://eike.se/nd
// License: MIT License
if (!document.getElementsByClassName) {
document.getElementsByClassName = function(search) {
var d = document, elements, pattern, i, results = [];
if (d.querySelectorAll) { // IE8
return d.querySelectorAll("." + search);
}
if (d.evaluate) { // IE6, IE7
pattern = ".//*[contains(concat(' ', @class, ' '), ' " + search + " ')]";
elements = d.evaluate(pattern, d, null, 0, null);
while ((i = elements.iterateNext())) {
results.push(i);
}
} else {
elements = d.getElementsByTagName("*");
pattern = new RegExp("(^|\\s)" + search + "(\\s|$)");
for (i = 0; i < elements.length; i++) {
if ( pattern.test(elements[i].className) ) {
results.push(elements[i]);
}
}
}
return results;
}
}
答案 1 :(得分:0)
您可以通过javascript中的检查而非HTML中的检查来做到最好。在JS中,你有一个属性navigator.userAgent
,它为每个浏览器(甚至IE在不同的兼容版本中)返回一个唯一的字符串。所以我建议在所有浏览器中执行整个JS块,只需添加类似的东西添加它的顶部:
if(navigator.userAgent.indexOf('MSIE 9.0') !== -1)
{
// call IE9 specific method
}
else
{
// call method for other browsers
}
有关更复杂的方法,请参阅此帖子navigator.userAgent
答案 2 :(得分:0)
由于jfriend00声明功能检测可能是更好的解决方案,但这里是符合您要求的条件注释。
<!--[if gte IE 9]> -->
<script type="text/javascript"> alert('ie9+ and not ie') </script>
<!-- <![endif]-->
<!--[if lt IE 9]>
<script type="text/javascript"> alert(' < ie9') </script>
<![endif]-->