我知道如何使用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
。正如微软在website和dev center中所述,他们在新版本中支持 NOT :
重要从Internet Explorer 10开始,条件注释为否 标准模式支持更长时间。使用特征检测来提供 网站功能的有效后备策略不是 由浏览器支持。有关标准模式的更多信息,请参阅 定义文档兼容性。
通过有效方法进行测试在我的POV中效率更高,但我不知道如何以特定版本的方式进行测试...(“使用这个你可以测试那个版本“)。我所知道的唯一一个就是我用的例子。是否有其他方法可以用来测试它?不是吗?
答案 0 :(得分:0)
虽然功能检测非常有用,并且有时是区分支持和非支持浏览器版本的最快方法,但检测IE及其版本实际上是小菜一碟:
var uA = navigator.userAgent;
var browser = null;
var ieVersion = null;
var htmlTag = document.documentElement;
if (uA.indexOf('MSIE 6') >= 0) {
browser = 'IE';
ieVersion = 6;
}
if (uA.indexOf('MSIE 7') >= 0) {
browser = 'IE';
ieVersion = 7;
}
if (document.documentMode) { // as of IE8; strictly IE proprietary
browser = 'IE';
ieVersion = document.documentMode;
}
// Using it can be done like this:
if (browser == 'IE' && ieVersion == 11)
htmlTag.className += ' ie11';
。
这就是你所需要的。你也可以在较低的模式/视图中使用此脚本捕获更高的IE,包括兼容性〜。