我已经对特定的特性进行了特性检测,以决定是否可以使用它,或者是否需要使用工作。但是,不幸的是,我发现IE在这个特性中有一些But,使它对我来说是无用的,即使它是存在的。所以,即使它通过了特征检测,我也需要检测浏览器是IE,所以如果它是IE,我就不使用该功能。
我已经尝试过是否能够对实际的but行为进行特性检测(这将是最好的,因为如果IE在将来修复了该行为,它就会适应),但是似乎没有任何方法可以做到这一点(不同问题主题)。这意味着我只能试图确定这是一个IE浏览器,这样我就可以避免错误的特性。我不想使用useragent字符串,因为我们都知道它很容易被欺骗,而且很容易出错。
所以,我想要做的特征检测,它是否是IE浏览器。
到目前为止,我的做法是:
var isIE = (document.body.attachEvent && window.ActiveXObject);这看上去是否存在attachEvent()方法,以及是否存在ActiveXObject支持。我不得不做的不仅仅是attachEvent检查,因为Opera支持attachEvent。
这是检测IE的可靠方法吗?有没有更好的方法?
请不要回应我真的不应该做浏览器检测,而是应该使用特征检测。我已经在做特性检测了,但是这导致了一个问题,因为一个“支持”特性从而通过特性检测的浏览器是如此的错误,以至于我不能在那个浏览器中使用这个特性。所以,现在我必须检测到有问题的浏览器。
如果您想了解更多关于正在使用的特定情况的信息,请在另一个问题中描述。
发布于 2012-08-29 20:59:53
在链接的帖子中,提出了有条件的评论意见。这将允许您检测甚至IE的版本。
在你的脑子里加上这样的东西:
<!--[if lt IE 9]>
<script type="text/javascript">
var lt9=true;
</script>
<![endif]-->这是IE特有的,在其他浏览器中将被忽略为注释。
对于简单的检测,请使用如下所示:
<!--[if gte IE 6]>
<script type="text/javascript">
// this is IE greater than or equal to 6
var isIE=true;
</script>
<![endif]-->发布于 2012-10-03 16:59:38
使用条件注释而不是条件编译具有允许检测IE版本(相对于JScript版本,这是从条件编译中获得的最佳版本)的优点。您可以使用innerHTML从脚本中执行此操作,如下所示。下面的示例演示如何检测IE8或更低版本:
var div = document.createElement("div");
div.innerHTML = "<!--[if lte IE 8]><i></i><![endif]-->";
var isIe8orLower = (div.getElementsByTagName("i").length == 1);
alert("Is IE 8 or lower: " + isIe8orLower);请注意,IE 10及以后版本根本不支持有条件的注释。。然而,条件编译继续工作,是下一个最好的选择,所以我建议使用它,尽管如上所述,它无法识别IE的实际版本。
https://stackoverflow.com/questions/12186325
复制相似问题