首页 > 代码库 > 最短的通过特性检测判断浏览器
最短的通过特性检测判断浏览器
注意:我们这里一般是讨论IE和非IE浏览器,更精准的检测需要结合UA和其他特性检测来综合判断
1. 垂直制表符
‘\v‘的转义问题,利用浏览器对转义字符‘\v‘的理解
IE浏览器不能识别\v为一种转义字符,会直接输出v
其他浏览器(目前验证safari\chrome)会转义为垂直制表符,大约等同于""一个空格
// ie会生成为v1,right-expression遇到+会转化为字符串拼接,但left-expression为空,会转为数字加法, 可以了解下+[]为什么等于0// 所以ie +"v1"等到的结果就是NaNvar ie = !+"\v1"; //false, ie
2: 利用浏览器的JS引擎解析不同
我们在写一个类Json结构的object的js对象时,如
{ name: "test", key: "key", value: false,}
这段代码在IE的引擎下会报错为: 不期望的结束符,原因在于value结束后 ‘,‘号浏览器解析错误,所以这个方法是充分利用浏览器的纠错功能来做的判断
那么[1,]在IE调用toString方法将会解析"1," 在标准浏览器中会剔除‘,‘,注意区分ArrayList中[,3,,4,]missing的是哪些索引,可以看MDN的解释
if (!+[1,]) { // ie } else { // 标准浏览器}// 操作符+当左表达式不存在时会试图把右表达式转化为number// +[]// +[]的转化过程可以这样来解释// Number([])// Number([].toString()) // [].valueOf() isn’t primitive// Number("")// 0
扩展: +[]可以查看
最短的通过特性检测判断浏览器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。