javascript - js识别ie浏览器
阿神
阿神 2017-04-11 12:05:36
[JavaScript讨论组]

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

阿神
阿神

闭关修行中......

全部回复(3)
黄舟

我的书里面有许多

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, p = document.createElement('p');
    while (p.innerHTML = '<!--[if gt IE ' + (++v) + ']><br><![endif]-->', p.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

巴扎黑

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

PHP中文网

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号