浅谈jQuery为哪般去掉了浏览器检测


Posted in Javascript onAugust 29, 2016

由于做HTML5相关的项目,许多前卫时髦的前端技术就需要考虑一下IE是否支持。要是在以前,可以很方便地调用jQuery的jQuery.browser来实现。

If(jQuery.browser.msie) alert(“DIE IE!”)

但这一便利在jQuery 1.9之后就不复存在了。突然觉得像失去了一个最亲密的战友,一个我一搞开发就离不开的好基友,一个我离开了就 无法写出跨浏览器的前端代码的好工具。一下子我竟不知道该如何是好。

然后每次需要考虑IE的时候,我就会去google一下,如何用1.9版本的jQuery来检测IE,但StackOverFlow上的多数回答都告诉我:jQuery1.9废掉勒jQuery.browser,建议用jQuery.support,但是没有人告诉我为什么。

也不知道那时我的是不是脑子被门夹了半天反应不过来为什么给废掉了,反正我的目的很简单,就是需要检测当前用户用的是不是IE,如果不是IE,那么我就需要弹出相关提示信息告诉用户你正在使用IE,某些功能可能不被支持云云。。。

无奈,以至于我的编码回到了那个没有jQuery的石器时代,用最原始的最plain的JavaScript代码来检测IE,而关于这样的方法,由于有无数前辈在与IE的博弈中积累了大量经验,现成的方法已经写过N多了,所以我也就随便拣一个用着。而且每次用的都还不一样,下次遇到要检测IE的时候,又去Google一把,得到另一段代码达到相同的效果。

但问题是觉得别扭,就为了检测一个IE,就需要专门为此多出一大段丑陋而跟页面功能逻辑毫不相关的代码。这感觉像是安装一个破解软件而同时被捆绑一大批广告插件一样。

伴随最近Windows8.1的发部随便关心了一下随之而来的IE11,官方居然说这货会支持WegGL技术!IE11将会支持这个微软一直唾弃的技术了。这其实还不太让人奇怪。因为IE被前端人员看成奇葩早在IE6时就开始了,这么多年过去了,开发者还不是和它共存了下来嘛。

但是IE11支持WebGL跟本文的毛线关系呢?是没多大关系,但我突然意识到之前HTML5项目中用Three.js写的东西可以在IE上运行了,至少在IE11上!所以之前关于IE的检测显得很二很不合逻辑。我天灵盖似乎一道金光冒出,走出了之前的一个误区:确实不需要检测用户使用的是不是IE浏览器。我们的目的是要让代码正常运行。如果当前浏览器支持我们代码中的特性,那么就正常运行,如果不支持,那就罢工给出提示呗。

所以我似乎理解为什么jQuery在1.9中不支持jQuery.browser了,转而给出了support这个API,而且当我再次搜索“检测IE”相关的问题时,也有声音建议用Modernizr.js(一个检测浏览器对HTML5,CSS3支持情况的JavaScript库)。

因为检测IE本身就是不科学的。尽管一些HTML5特性IE现在不支持,但它在不断的更新,所以不代表后来的版本中不支持。所以如果代码中还存在很直白的专门针对IE的代码就显得相当不科学了。一如上面提到的WegGL浏览器中3D相关的程序,可以预期,分明能够在IE11中运行,但代码如果仅仅是检测浏览器IE就罢工然后很骄傲地弹出个提示“请换用其他浏览器”,IE是不是很无辜。。。

另外还有个原因不要只是检测浏览器是不是IE,那就是各浏览器间本身就有差异,有差异是正常的,即使是除了IE外的FireFox,Chrome,Opera, Safari之类的,在各个Web标准的支持和实现上也不是完全一致。这也就是为什么一个样式在Chrome中调试正常了,到FF中显得有点别扭。如果是JavaScript代码中的差异,是否我们又该写一段检测FF的代码。或者某天发现在Opera中某个功能出来的结果有偏差,那又要写一段检测Opera的代码,显示这种思路是有问题的。

这也就是为什么Modernizr.js会有用武之地的原因。为了确保代码预期正常实现,我们需要先检测当前浏览器是否支持该功能,如果支持,okay,代码正常执行,如果不支持,则执行另一段代码。

以上这篇浅谈jQuery为哪般去掉了浏览器检测就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
May 13 Javascript
JQuery从头学起第二讲
Jul 04 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
Sep 16 Javascript
JavaScript框架(iframe)操作总结
Apr 16 Javascript
Angular.js中$apply()和$digest()的深入理解
Oct 13 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
Nov 05 Javascript
Angular中响应式表单的三种更新值方法详析
Aug 22 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
Feb 09 Javascript
修改npm全局安装模式的路径方法
May 15 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
使用p5.js临摹动态图片
Nov 04 Javascript
js前端对于大量数据的展示方式及处理方法
Dec 02 Javascript
jQuery为动态生成的select元素添加事件的方法
Aug 29 #Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
Aug 29 #Javascript
ionic隐藏tabs的方法
Aug 29 #Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
Aug 29 #Javascript
深入理解React中es6创建组件this的方法
Aug 29 #Javascript
Ionic默认的Tabs模板使用实例
Aug 29 #Javascript
关于Javascript回调函数的一个妙用
Aug 29 #Javascript
You might like
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
将php数组输出html表格的方法
2014/02/24 PHP
php中error与exception的区别及应用
2014/07/28 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
loading动画特效小结
2017/01/22 Javascript
canvas实现图像截取功能
2017/02/06 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
angular多语言配置详解
2019/05/16 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
Python grpc超时机制代码示例
2020/09/14 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
招聘专员岗位职责
2014/03/07 职场文书
公立医院改革实施方案
2014/03/14 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
详解php中流行的rpc框架
2021/05/29 PHP