浅谈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 相关文章推荐
javascript截取字符串(通过substring实现并支持中英文混合)
Jun 24 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
Feb 13 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
Jul 01 Javascript
JS JSOP跨域请求实例详解
Jul 04 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
Feb 14 Javascript
Vue生命周期示例详解
Apr 12 Javascript
Vue.js在数组中插入重复数据的实现代码
Nov 17 Javascript
JS通过位运算实现权限加解密
Aug 14 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
Jan 08 Javascript
Electron-vue开发的客户端支付收款工具的实现
May 24 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
Aug 27 Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 jQuery
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中static,const与define的使用区别
2013/06/18 PHP
php中session与cookie的比较
2015/01/27 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
PHP用continue跳过本次循环中剩余代码的注意点
2017/06/27 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
php利用ZipArchive类操作文件的实例
2020/01/21 PHP
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
JS 实现图片直接下载示例代码
2013/07/22 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
微信JS接口汇总及使用详解
2015/01/09 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
Django卸载之后重新安装的方法
2017/03/15 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
Python如何急速下载第三方库详解
2020/11/02 Python
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
论文诚信承诺书
2014/05/23 职场文书
人事任命书怎么写
2014/06/05 职场文书
信息与计算机科学职业规划范文:成为一艘有方向的船
2014/09/11 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
学生会主席任命书
2015/09/21 职场文书
利用 JavaScript 构建命令行应用
2021/11/17 Javascript
Python中的程序流程控制语句
2022/02/24 Python
Python实现Hash算法
2022/03/18 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python