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

简介: 由于做HTML5相关的项目,许多前卫时髦的前端技术就需要考虑一下IE是否支持。要是在以前,可以很方便地调用jQuery的jQuery.browser来实现。 If(jQuery.browser.msie) alert(“DIE IE!”) 但这一便利在jQuery 1.9之后就不复存在了。

由于做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,代码正常执行,如果不支持,则执行另一段代码。

 

 

目录
相关文章
|
3月前
|
JavaScript 前端开发
JavaScript DOM 操作:如何检测浏览器是否支持某个特性?
JavaScript DOM 操作:如何检测浏览器是否支持某个特性?
25 0
|
10月前
检测浏览器刷新还是退出代码 #127
检测浏览器刷新还是退出代码 #127
44 0
|
11月前
|
前端开发 JavaScript 开发者
进一步防止 Selenium 被检测——如何防止浏览器用新标签页打开链接?
进一步防止 Selenium 被检测——如何防止浏览器用新标签页打开链接?
130 0
|
JavaScript 测试技术 容器
JQuery 获取元素到浏览器可视窗口边缘的距离
JQuery 获取元素到浏览器可视窗口边缘的距离
103 0
|
JavaScript 前端开发 测试技术
JQuery iframe宽高度自适应浏览器窗口大小的解决方法
JQuery iframe宽高度自适应浏览器窗口大小的解决方法
218 0
|
Web App开发 JavaScript 前端开发
Chrome 浏览器的更新导致 jQuery 反复发版,只因 :has 这个伪类
最近 jQuery 似乎又“回光返照”了一下,窜稀式地连更了几个小版本。
|
安全 Windows
edge浏览器,无法继续下载,提示检测到病毒的问题
找到 隐私搜索和服务--下滑找到“安全性”--关闭 Microsoft Defender Smartscreen。(不用担心忘记打开,只是暂时关闭的,过段时间会自动开启)这其实也很好解决,既然被拦截,那就把拦截干掉。下载一个东西,选择保留文件,依然被拦截了下来。此时再重新打开网站下载我们的文件,成功咯!唉,头疼,找来找去也没找到解决方法。2.接着打开我们的电脑系统设置。今天我下载文件,遇到了这种问题。结果发现是设置出了点小问题。--Windows安全中心。--关闭实时防护就好啦。哎~so easy!....
edge浏览器,无法继续下载,提示检测到病毒的问题
|
JavaScript
Jquery判断手机浏览器版本
Jquery判断手机浏览器版本
|
Web App开发 编解码 JavaScript
js检测浏览器及系统信息
js检测浏览器及系统信息
231 0
|
移动开发 API HTML5
HTML5使用Geoloacation API检测浏览器的支持性
HTML5使用Geoloacation API检测浏览器的支持性