jQuery.browser:Javascript Uncaught TypeError

我遇到了一个错误,它不会让我的页面加载。

未捕获的TypeError:无法读取未定义的属性“msie”

控制台中的错误引用此代码:

if (jQuery.browser.msie) extra_px += 3; // Fix Link Clicking on IE 7 and below versions if (jQuery.browser.msie && Number($.browser.version) < 8) { span_text.css('cursor', 'pointer'); span_text.click(function() { window.location = menu_item.parent().attr("href"); }); } 

奇怪的是它突然发生了,我没有改变一件事。 作为参考,我正在使用Wordpress。

jQuery.browser在1.3版中已弃用 ,最后在1.9中删除

资源

正如您在当前版本的jQuery中所看到的,不再有$.browser属性。

最有可能的是它被转移到插件中,如文档中所述 。

因此,如果您使用最后一个版本的jQuery,则undefined错误是可以理解的。

是的,jQuery.browser在旧版本中已被弃用,并在1.9中被删除。所以在旧版本中,如果代码写得像这样

 isIE6 = jQuery.browser.msie && jQuery.browser.version < 7 && !window.XMLHttpRequest, 

将被替换为

 isIE6 = navigator.userAgent.match(/msie [6]/i) && !window.XMLHttpRequest, 

干杯!!!

正如VisioN的回答所提到的那样,这在jQuery 1.9中被删除了,而且似乎很快就会回来了。

如果你想使用Plugin将$.browser重新添加到你的jQuery库中,只需将下面的代码复制并粘贴到一个文件中,然后在jQuery之后的任何地方链接脚本:

 ;;(function($){if(!$.browser&&1.9<=parseFloat($.fn.jquery)){var a={browser:void 0,version:void 0,mobile:!1};navigator&&navigator.userAgent&&(a.ua=navigator.userAgent,a.webkit=/WebKit/i.test(a.ua),a.browserArray="MSIE Chrome Opera Kindle Silk BlackBerry PlayBook Android Safari Mozilla Nokia".split(" "),/Sony[^ ]*/i.test(a.ua)?a.mobile="Sony":/RIM Tablet/i.test(a.ua)?a.mobile="RIM Tablet":/BlackBerry/i.test(a.ua)?a.mobile="BlackBerry":/iPhone/i.test(a.ua)?a.mobile="iPhone":/iPad/i.test(a.ua)?a.mobile="iPad":/iPod/i.test(a.ua)?a.mobile="iPod":/Opera Mini/i.test(a.ua)?a.mobile="Opera Mini":/IEMobile/i.test(a.ua)?a.mobile="IEMobile":/BB[0-9]{1,}; Touch/i.test(a.ua)?a.mobile="BlackBerry":/Nokia/i.test(a.ua)?a.mobile="Nokia":/Android/i.test(a.ua)&&(a.mobile="Android"),/MSIE|Trident/i.test(a.ua)?(a.browser="MSIE",a.version=/MSIE/i.test(navigator.userAgent)&&0 

的jsfiddle


传统上使用如下: if ($.browser.msie) { doWork }


 /** jQuery.browser * @author JD McKinstry (2014) * @description Made to replicate older jQuery.browser command in jQuery versions 1.9+ * @see http://jsfiddle.net/SpYk3/wsqfbe4s/ * * @extends jQuery * @namespace jQuery.browser * @example jQuery.browser.browser == 'browserNameInLowerCase' * @example jQuery.browser.version * @example jQuery.browser.mobile @returns BOOLEAN * @example jQuery.browser['browserNameInLowerCase'] * @example jQuery.browser.chrome @returns BOOLEAN * @example jQuery.browser.safari @returns BOOLEAN * @example jQuery.browser.opera @returns BOOLEAN * @example jQuery.browser.msie @returns BOOLEAN * @example jQuery.browser.mozilla @returns BOOLEAN * @example jQuery.browser.webkit @returns BOOLEAN * @example jQuery.browser.ua @returns navigator.userAgent String */ ;;(function($){if(!$.browser&&1.9<=parseFloat($.fn.jquery)){var a={browser:void 0,version:void 0,mobile:!1};navigator&&navigator.userAgent&&(a.ua=navigator.userAgent,a.webkit=/WebKit/i.test(a.ua),a.browserArray="MSIE Chrome Opera Kindle Silk BlackBerry PlayBook Android Safari Mozilla Nokia".split(" "),/Sony[^ ]*/i.test(a.ua)?a.mobile="Sony":/RIM Tablet/i.test(a.ua)?a.mobile="RIM Tablet":/BlackBerry/i.test(a.ua)?a.mobile="BlackBerry":/iPhone/i.test(a.ua)?a.mobile="iPhone":/iPad/i.test(a.ua)?a.mobile="iPad":/iPod/i.test(a.ua)?a.mobile="iPod":/Opera Mini/i.test(a.ua)?a.mobile="Opera Mini":/IEMobile/i.test(a.ua)?a.mobile="IEMobile":/BB[0-9]{1,}; Touch/i.test(a.ua)?a.mobile="BlackBerry":/Nokia/i.test(a.ua)?a.mobile="Nokia":/Android/i.test(a.ua)&&(a.mobile="Android"),/MSIE|Trident/i.test(a.ua)?(a.browser="MSIE",a.version=/MSIE/i.test(navigator.userAgent)&&0').append( $('', { text: x }), $('', { text: b[x] }) ).appendTo($('table')); } 
 table { border-collapse: collapse; } th, td { border: 1px solid; padding: .25em .5em; vertical-align: top; } th { text-align: right; } textarea { height: 500px; width: 100%; } 
  

您可以将jQuery.Migrate库用于$ .browser等已弃用的函数支持。

请参阅https://github.com/jquery/jquery-migrate/#readme