浅谈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 相关文章推荐
js Date自定义函数 延迟脚本执行
Mar 10 Javascript
JS代码同步文本框内容的实例方法
Jul 12 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
jquery实现的代替传统checkbox样式插件
Jun 19 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
Dec 02 Javascript
微信小程序 实战实例开发流程详细介绍
Jan 05 Javascript
搭建element-ui的Vue前端工程操作实例
Feb 23 Javascript
使用vue-aplayer插件时出现的问题的解决
Mar 02 Javascript
微信小程序左滑动显示菜单功能的实现
Jun 14 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
Jun 21 Javascript
Node登录权限验证token验证实现的方法示例
May 25 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 第二节 数据类型之字符串类型
2012/04/28 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
php实现微信支付之退款功能
2018/05/30 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
深入探究Django中的Session与Cookie
2017/07/30 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
韩国知名的家庭购物网站:CJmall
2016/08/01 全球购物
德国BA保镖药房韩文网:kr.ba.de
2017/09/04 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
某科技软件测试面试题
2013/05/19 面试题
软件测试常见笔试题
2012/02/04 面试题
解决方案设计综合面试题
2015/08/31 面试题
个人应聘自我评价分享
2013/11/18 职场文书
承诺书的格式范文
2014/03/28 职场文书
党风廉政建设责任书
2014/04/14 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
医院见习报告范文
2014/11/03 职场文书
股份转让协议书范本
2015/01/27 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android