扫码关注官方订阅号
请教一下,!+[1,] 能识别ie浏览器,利用了哪些特性?
闭关修行中......
我的书里面有许多
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及以下的一个bugie8及ie以下浏览器的结果为true,其他浏览器的结果为false是一个俄罗斯人发现的。其他浏览器[1,]等价于[1]而IE8会添加一个空数组元素到数组元素的总数里,等价于[1,undefined]这样的数组+[1,]是强制转换成数字,这中间的过程是[1,]转换成字符串,字符串再转换成数字其他浏览器:!+[1,] -> !+'1' -> !1 -> falseie8及以下: !+[1,] -> !+'1,' -> !NAN -> !false ->true
chrome IE9 下返回值一样,怎么识别
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我的书里面有许多
!+[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 下返回值一样,怎么识别