我已经对特定功能进行了功能检测,以决定是否可以使用它或是否必须使用变通方法。但是,不幸的是,我发现 IE 在该功能中有一些错误,即使它存在,它也对我毫无用处。因此,即使它通过了功能检测,我也需要检测浏览器是 IE,所以如果它是 IE,我不会使用该功能。
我试图看看我是否可以对实际的错误行为进行功能检测(这将是最好的,因为如果 IE 将来修复该行为,它会适应),但似乎没有任何方法可以做到这一点(主题另一个问题)。这意味着我只能试图最终确定它是一个 IE 浏览器,这样我就可以避免这个错误的功能。 我不想使用 useragent 字符串,因为我们都知道它很容易被欺骗并且很容易出错。
所以,我想对它是否是IE浏览器进行特征检测。
到目前为止我的方法是这样的:
var isIE = (document.body.attachEvent && window.ActiveXObject);
这将查看该attachEvent()
方法是否存在以及是否ActiveXObject
存在支持。因为attachEvent
Opera 支持attachEvent
.
这是检测 IE 的可靠方法吗?有没有更好的方法?
请不要回复我真的不应该做浏览器检测,而是应该使用特征检测。我已经在进行功能检测,但这导致了一个问题,因为“支持”该功能并因此通过功能检测的浏览器结果非常错误,以至于我无法在该浏览器中使用该功能。所以,现在我必须检测有问题的浏览器。
如果您想了解更多有关使用此功能的具体情况,请参阅this other question。