[英]IE version Without conditional comments in javascript
我知道如何使用条件注释来测试ie版本。 但是,通过测试一个javascript方法并检查它是否受支持,我找到了一种很好且干净的方法,例如:
if( document.addEventListener ){
alert("you got IE9 or greater");
}
但是,如果它是特定版本,我不知道如何进行测试(例如,如果它是IE8 ,我想做点什么,但是如果它是IE7或IE9或其他版本,则不行。
我可以使用James Panolsey的解决方案
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在其网站和开发中心中所述 ,他们不支持其新版本:
重要从Internet Explorer 10开始,标准模式不再支持条件注释。 使用功能检测可为浏览器不支持的网站功能提供有效的后备策略。 有关标准模式的更多信息,请参见定义文档兼容性。
在我的POV中,通过有效方法进行测试更有效,但是我不知道如何以特定版本进行测试……(“使用它可以测试该版本”)。 我所知道的唯一一个是我作为示例使用的上述一个。 还有其他方法可以测试吗? 或不?
虽然功能检测非常有用,并且有时是区分支持浏览器版本和不支持浏览器版本的最快方法,但是检测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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.