【发布时间】:2014-06-21 19:43:34
【问题描述】:
我知道如何使用conditional comments 测试ie 版本。但是,我发现了一种很好且干净的方法,通过测试 javascript 方法并检查它是否受支持,例如:
if( document.addEventListener ){
alert("you got IE9 or greater");
}
但是,如果它是特定版本,我不知道如何测试它(例如,如果它是 IE8,我想做一些事情,但如果它是 IE7 则不是或 IE9 或其他版本。
我可以使用James Panolsey's solution
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;
}());
但它确实使用条件注释进行测试。
为什么不用条件评论?因为Standards mode。正如 Microsoft 在其 website 和 dev center 中所述,他们确实不在其新版本中支持它:
重要 从 Internet Explorer 10 开始,条件 cmets 不再 标准模式支持的时间更长。使用特征检测提供 网站功能的有效后备策略 浏览器支持。有关标准模式的详细信息,请参阅 定义文档兼容性。
通过有效方法测试在我的 POV 中更有效,但我不知道如何以特定版本的方式进行测试......(“使用 this 你可以测试那个版本”)。我唯一知道的是上面我用作示例的那个。还有其他方法可以用来测试吗?还是不行?
【问题讨论】:
-
如果您只需要测试确实 支持条件 cmets 的特定版本,并忽略所有较新的版本,那么您可以使用条件 cmets。否则,只需使用
addEventListener示例中的特征检测即可。 -
测试不同的东西,比如画布
-
@BoltClock 我需要测试它是否是一个函数,如果它是 ie >= 11 对于其他函数。当开始支持某些方法时,我只是不知道在哪里可以找到。所以我可以用它们来测试特定的功能。我只知道
addEventListeneratm。 @pc-shooter 说要测试画布,例如,这是一个很好的,但我想要更多,不知道在哪里看。 -
@MichelAyres - 寻找您需要的实际功能。不要试图根据某事或其他事的真实性来猜测浏览器。这是过去 10 年网络社区一直在摆脱的脆弱混乱。
标签: javascript jquery internet-explorer browser browser-detection