浅谈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 相关文章推荐
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
Feb 24 Javascript
JS继承 笔记
Jul 13 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 Javascript
分析js闭包引起的事件注册问题
Mar 29 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
May 13 Javascript
jQuery动态添加与删除tr行实例代码
Oct 18 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
Mar 13 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
Apr 12 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
Jun 01 Javascript
用Node提供静态文件服务的方法
Jul 06 Javascript
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 Vue.js
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 Mssql操作简单封装支持存储过程
2009/12/11 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
Redis构建分布式锁
2017/03/28 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
深入document.write()与HTML4.01的非成对标签的详解
2013/05/08 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
python爬虫中多线程的使用详解
2019/09/23 Python
Python如何存储数据到json文件
2020/03/09 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
回门宴新郎答谢词
2014/01/12 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
2014年实习期工作总结
2014/11/27 职场文书
检讨书模板
2015/01/29 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
Nginx限流和黑名单配置
2022/05/20 Servers