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

注意:我们这里一般是讨论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

扩展: +[]可以查看

时间: 2024-10-10 13:03:56

最短的通过特性检测判断浏览器的相关文章

userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统

1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: 1 var client = function() { 2 var engine = { 3 ie: 0, 4 gecko: 0, 5 webkit: 0, 6 khtml: 0, 7 opera: 0, 8 9 // 具体的版本号 10 ver: null 11 }; 12 13 return { 14 engine: engine 15 } 16 }()

Feature.js-轻量级浏览器特性检测JavaScript库插件

简要教程 Feature.js是一款轻量级的浏览器特性检测JavaScript库插件.该插件运行速度快,使用简单,文件只有1kb大小.通过Feature.js你可以检测客户浏览器是否支持某些特性,并针对这些特性编写代码. Feature.js会自动在页面初始化时进行加载,但是它不会自动进行特性检测,直到你在代码中调用它时才会进行指定特性的检测. 通过Feature.js你可以对浏览器进行特性检测,例如检测浏览器是否支持CSS 3D transforms,为支持该特性的浏览器编写代码来操纵元素进行

浏览器特性检测插件Feature.js

<script src="js/feature.js"></script> if (feature.webGL) { console.log("你的浏览器支持WebGL"); } else { console.log("你的浏览器不支持WebGL"); } 下面是Feature.js可进行的浏览器检测的特性列表. feature.async feature.addEventListener feature.canvas f

浏览器对HTML5特性检测工具Modernizr

最近在做公司移动端运营的项目,需求中多处地方都会涉及动画.相信很多前端开发都会有这种感触,对CSS3中的动画属性很熟悉,但是由于对动画运动过程的理解不深入,经常只能望而止步.CSS3中动画这在Web页面中具有点睛之笔,让人眼前一亮,这段时间我会抽空来整理关于动画这块的知识点,希望能在总结的同时分享给有需要的朋友们,如果有什么好的建议和想法欢迎相互交流学习.无论是动画还是别的CSS3的新特性在移动端都能得到很好的支持,可是对于PC端来说,有那么些不太友好的浏览器(比如万恶的IE9-)无法支持CSS

js判断浏览器类型

js判断浏览器类型  <script type="text/javascript" >     <!--   function getOs()   {       var OsObject = "";      if(isIE = navigator.userAgent.indexOf("MSIE")!=-1) {           return "MSIE";      }      if(isFiref

JavaScript判断浏览器类型及版本

说明:以下内容参考了一些网上资料以及同事间的一些讨论. 浏览器对于我们来说,可能是最熟悉的工具了.记得最早那会Netscape,到后来的Internet Explorer一统江湖,再到现在的FireFox大行其道,浏览器市场的争夺,可谓是硝烟弥漫.除了我们常见的IE, Firefox, Opera, Safari四大金刚以外,新近又出了一位Chrome,虽然新出,但是出于Google这个名门,Chrome所受到的关注绝不亚于先前的四大金刚,看来以后要改为5朵金花了,呵呵.除了这些熟知的浏览器以外

jQuery 1.9不支持$.browser 怎么判断浏览器类型和版本

jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更新的 2.0 版本中,将不再支持 IE 6/7/8. 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9. 如果要全面支持 IE,并混合使用 jQuery 1.9 和 2.0, 官方的解决方jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support

用户代理检测与浏览器Ua详细分析

. 首页 博客园 联系我 前言:用户代理字符串与用户代理检测. 先看结论/可用代码. 浏览器市场份额现状. Mozilla Firefox. Microsoft Internet Explorer. Google Chrome. Apple Safari. Opera. 呈现引擎(浏览器内核). 国产浏览器. 判断操作系统. 随笔感想. 留言评论 返回顶部 前言:用户代理字符串与用户代理检测 “用户代理字符串”(User Agent,下文简称“Ua”)是浏览器用来标识自身信息的一串字符 现如今,

通过JS检测360浏览器

如何通过JS检测360浏览器? 尝试了一大堆方法,网上大多数办法都是通过navigator.userAgent来判断,这可能在几年前是行得通的,现在360userAgent输出来跟谷歌除了版本号其余一模一样... 谷歌:      Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 360极速:Mozilla/5.0 (Windo