Jquery 1.9.0 以上版本 $.browser未定义


由于jQuery 1.9.0 以上版本 jquery去掉了对 $.browser 的支持,采用$.support 来判断浏览器类型。导致之前的很多插件报错

"Uncaught TypeError: Cannot read property 'msie' of undefined".


网上有很多解决办法如:

判断浏览器类型:

  1. <span style="white-space:pre">    </span>$.browser.mozilla = /firefox/.test(navigator.userAgent.toLowerCase());  
  2.     $.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());  
  3.     $.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());  
  4.     $.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());  


号后面的表达式返回的就是 true/false, 可以直接用来替换原来的 $.browser.msie 等。


检查是否为 IE6:
// Old
  1. <span style="white-space:pre">    </span>if ($.browser.msie && 7 > $.browser.version) {}  
// New
  1. <span style="white-space:pre">    </span>if ('undefined' == typeof(document.body.style.maxHeight)) {}  
检查是否为 IE 6-8:
  1. <span style="white-space:pre">    </span>if (!$.support.leadingWhitespace) {}  


**************************************************************************

下面  我们采取的思路是 使用jquery的继承机制 对jquery 1.11.1版本 进行扩展 使其支持 $.browser 方法,已达到兼容之前组件的目的.

  1. jQuery.extend({  
  2.     browser: function()   
  3.     {  
  4.         var  
  5.         rwebkit = /(webkit)\/([\w.]+)/,  
  6.         ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,  
  7.         rmsie = /(msie) ([\w.]+)/,  
  8.         rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,      
  9.         browser = {},  
  10.         ua = window.navigator.userAgent,  
  11.         browserMatch = uaMatch(ua);  
  12.   
  13.         if (browserMatch.browser) {  
  14.             browser[browserMatch.browser] = true;  
  15.             browser.version = browserMatch.version;  
  16.         }  
  17.         return { browser: browser };  
  18.     },  
  19. });  
  20.   
  21. function uaMatch(ua)   
  22. {  
  23.         ua = ua.toLowerCase();  
  24.   
  25.         var match = rwebkit.exec(ua)  
  26.                     || ropera.exec(ua)  
  27.                     || rmsie.exec(ua)  
  28.                     || ua.indexOf("compatible") < 0 && rmozilla.exec(ua)  
  29.                     || [];  
  30.   
  31.         return {  
  32.             browser : match[1] || "",  
  33.             version : match[2] || "0"  
  34.         };  
  35. }  


将以上代码 保存成 jquery- browser.js 使用即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值