码迷,mamicode.com
首页 > 其他好文 > 详细

最短的通过特性检测判断浏览器

时间:2014-08-29 12:45:27      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   java   io   ar   div   

注意:我们这里一般是讨论IE和非IE浏览器,更精准的检测需要结合UA和其他特性检测来综合判断

1. 垂直制表符

‘\v‘的转义问题,利用浏览器对转义字符‘\v‘的理解

IE浏览器不能识别\v为一种转义字符,会直接输出v

其他浏览器(目前验证safari\chrome)会转义为垂直制表符,大约等同于""一个空格

// ie会生成为v1,right-expression遇到+会转化为字符串拼接,但left-expression为空,会转为数字加法, 可以了解下+[]为什么等于0
// 所以ie +"v1"等到的结果就是NaN
var 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

扩展: +[]可以查看

最短的通过特性检测判断浏览器

标签:style   blog   http   color   os   java   io   ar   div   

原文地址:http://www.cnblogs.com/sir-jarvis/p/3944541.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!