浅谈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 相关文章推荐
csdn 论坛技术区平均给分功能
Nov 07 Javascript
jquery getScript动态加载JS方法改进详解
Nov 15 Javascript
解决js数据包含加号+通过ajax传到后台时出现连接错误
Aug 01 Javascript
一道JS前端闭包面试题解析
Dec 25 Javascript
简单谈谈javascript中this的隐式绑定
Feb 22 Javascript
微信小程序 购物车简单实例
Oct 24 Javascript
jQuery实现的form转json经典示例
Oct 10 jQuery
小程序ios音频播放没声音问题的解决
Jul 11 Javascript
Vue中 key keep-alive的实现原理
Sep 18 Javascript
浅谈JS的原型和继承
May 08 Javascript
vant实现购物车功能
Jun 29 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 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
SONY ICF-F10中波修复记
2021/03/02 无线电
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
美国最大的存储市场:SpareFoot
2018/07/23 全球购物
linux系统都有哪些运行级别
2012/04/15 面试题
毕业生造价工程师求职信
2013/10/17 职场文书
小孩百日宴答谢词
2014/01/15 职场文书
网站客服岗位职责
2014/04/05 职场文书
初中生评语大全
2014/04/24 职场文书
酒店开业策划方案
2014/06/02 职场文书
音乐教师求职信
2014/06/28 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
音乐之声观后感
2015/06/04 职场文书
小学班级管理心得体会
2016/01/07 职场文书
如何在Python中妥善使用进度条详解
2022/04/05 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js