首页 > js识别ie浏览器

js识别ie浏览器

请教一下,!+[1,] 能识别ie浏览器,利用了哪些特性?


!+[1,]
ie8及以下的一个bug
ie8及ie以下浏览器的结果为true,其他浏览器的结果为false
是一个俄罗斯人发现的。
其他浏览器[1,]等价于[1]
而IE8会添加一个空数组元素到数组元素的总数里,等价于[1,undefined]这样的数组
+[1,]是强制转换成数字,这中间的过程是[1,]转换成字符串,字符串再转换成数字
其他浏览器:!+[1,] -> !+'1' -> !1 -> false
ie8及以下: !+[1,] -> !+'1,' -> !NAN -> !false ->true


chrome IE9 下返回值一样,怎么识别


我的书里面有许多

ie = !!document.recalc
ie = !!window.VBArray
ie = !!window.ActiveXObject
ie = !!window.createPopup;
ie = /*@cc_on!@*/!1;
ie = document.expando;//document.all在opera firefox的古老版本也存在
ie = (function() {//IE10中失效
    var v = 3, div = document.createElement('div');
    while (div.innerHTML = '<!--[if gt IE ' + (++v) + ']><br><![endif]-->', div.innerHTML )
        ;
    return v > 4 ? v : !v;
}());

ie678 = !+"\v1";
ie678 = !-[1, ];
ie678 = '\v' == 'v';
ie678 = ('a~b'.split(/(~)/))[1] == "b"
ie678 = 0.9.toFixed(0) == "0"
ie678 = /\w/.test('\u0130') //由群里的abcd友情提供
ie8 = window.toStaticHTML
ie9 = window.msPerformance

ie678 = 0//@cc_on+1;

ie67 = !"1"[0] //利用IE6或IE5的字符串不能使用数组下标的特征
ie8 = !!window.XDomainRequest;
ie9 = document.documentMode && document.documentMode === 9;

//基于条件编译的嗅探脚本,IE会返回其JS引擎的版本号,非IE返回0
var ieVersion = eval("''+/*@cc_on" + " @_jscript_version@*/-0") * 1
ie9 = ieVersion === 5.9
ie8 = ieVersion === 5.8
ie7 = ieVersion === 5.7
ie6 = ieVersion === 5.6
ie5 = ieVersion === 5.5
ie10 = window.navigator.msPointerEnabled
ie11 = '-ms-scroll-limit' in document.documentElement.style

【热门文章】
【热门文章】