Uncaught TypeError: Cannot read property 'msie' of undefined - jQuery tools
我在Chrome开发者控制台中收到以下错误:
1
Uncaught TypeError: Cannot read property 'msie' of undefined
我的理解是,因为.browser 现在在jQuery中已被弃用,但是我使用的是最新版本的jQuery工具,它仍然给出错误,我检查了js 文件,它就在那里。
我怎么能解决这个问题呢?它不会给出错误?
这个错误是不够的。你想从哪个元素读取这个?
我根本没有在代码中使用.browser 。它似乎是在jQuery工具文件中检测它。
browser 对象不仅在1.9中被弃用,它已经消失了。如果jQuery Tools仍在使用它,那么jQuery Tools就会被破坏。
如果您使用的是$.browser 则无关紧要。如果您的任何依赖项正在使用,那么您需要它
@ Colin747,说过,你可以尝试使用jQuery Migrate Plugin,如jQuery下载页面所述吗?
@Alexander似乎摆脱了这个错误。如果你愿意,你可以提出答案。
@ Colin747,我相信你可以将jQuery.migrateMute 和jQuery.migrateTrace 设置为false
@Alexander我找到了一个不会产生日志记录的CDN,但是谢谢,如果你想回答一下我会接受
@ Colin747,好的,我会发布它
最新的jQuery Tools仅使用jQuery 1.7进行了测试。 jQuery 1.9与最新版本的jQuery Tools不兼容;就这么简单。转储jQuery工具或将jQuery降级到任何低于1.9的版本。否则,不要指望任何人更新jQuery Tools,过去几年它一直没有开发人员。
这个错误与使用管理员覆盖模式有关吗?
您可以通过AJ查看此解决方案。它非常简单,只需复制并粘贴以下代码行即可。
1 2 3 4 5 6 7 8 9
jQuery.browser = { } ;
( function ( ) {
jQuery.browser .msie = false ;
jQuery.browser .version = 0 ;
if ( navigator.userAgent .match ( /MSIE ([0-9]+)\./ ) ) {
jQuery.browser .msie = true ;
jQuery.browser .version = RegExp.$1;
}
} ) ( ) ;
参考:
jQuery 1.9.x上的 $。浏览器用于旧版IE检测 del>
这完美!但我认为这应该用作补丁,而不是解决方案吗?
谢谢,使用一个使用这个的jquery插件,这是一个简单的短期解决方案,直到真正的修复推出。
谢谢。这个修复了Query Tools v1.2.7,因为我们将JQuery升级到最新版本。
哇,如果我能给你10个加号,我现在就会做。
这个答案不再正确,因为IE11在userAgent 字符串中没有MSIE令牌。
得救了!非常感谢
正如@DaveMethvin所提到的那样它在IE11中不起作用..在这个问题上的任何解决方案?
最好的一个...感谢男人!
留言Merci。这工作!!!
完美的工作.. !!!
它真棒......没有新的插件,工作得很好!
你节省我的一天:)
我把这个代码但它不适用于Chrome浏览器!
对我来说很完美,谢谢
谢谢你!
从jQuery 1.9开始,$.browser 方法已被删除。
jQuery.browser() removed
The jQuery.browser() method has been deprecated since jQuery 1.3 and is removed in 1.9. If needed, it is available as part of the jQuery Migrate plugin. We recommend using feature detection with a library such as Modernizr.
— jQuery Core 1.9 Upgrade Guide.
如升级指南中所述,您可以尝试使用jQuery Migrate插件来恢复此功能并让jQuery Tools工作。
在jsp / js文件中使用以下脚本标记:
1 2
< script src= "http://code.jquery.com/jquery-1.9.0.js" >
< script src= "http://code.jquery.com/jquery-migrate-1.2.1.js" >
这肯定会起作用。
试过......不工作:(
确保你有互联网连接。如果您正在脱机使用,请在最后下载js文件,然后引用该文件。
好吧,我可以看到它是在线托管...无论如何,谢谢我用jquery.noConflict()解决它,因为我有两个版本在同一页面上使用jquery。
@ManishaSrivastava谢谢,它对我有用。
@ User5590:随时:)
谢谢你,它开箱即用
这个解决方案适合我。简单易行。谢谢
我在js文件包含之后使用下面的代码,它现在正在工作。
1 2 3 4 5 6 7 8 9 10 11
< script src= "js/jquery-ui.min.js" type= "text/javascript" >
< script type= "text/javascript" >
jQuery.browser = { } ;
( function ( ) {
jQuery.browser .msie = false ;
jQuery.browser .version = 0 ;
if ( navigator.userAgent .match ( /MSIE ([0-9]+)\./ ) ) {
jQuery.browser .msie = true ;
jQuery.browser .version = RegExp.$1;
}
} ) ( ) ;
这个链接链接给了我错误,但你写的这段小代码对我帮助很大,谢谢你。
这是GitHub上的jQuery Tools错误。您可以尝试其中一个补丁。
编辑&mdash;我不认为jQuery Tools得到了很多支持。除非我准备自己接管支持,否则我个人不会开始依赖该库的新项目。
+1,jQuery Tools在过去的几年中一直是个烂摊子。它不是"获得太多支持"是非常准确的,并且是一个巨大的轻描淡写。我认为自jQuery 1.3以来只有一次小的更新,而且过去几年也没有开发人员。
同意,是否有人建议更换图书馆?有滚动条,叠加和范围输入滑块的东西?我避免使用jQuery mobile,因为它预先设置了风格。我以前做过它的风格,这是一场噩梦。
我已经开始为我想要的每个功能找到写得很好的最小库。即:范围输入滑块:loopj.com/jquery-simple-slider,scroller / slider:bxslider.com。我找到了更好的支持,并且总体上更小的足迹找到了像这样的单个库
用你的JS代替
1 2
< script src= "//code.jquery.com/jquery-1.10.2.js" >
< script src= "//code.jquery.com/ui/1.11.4/jquery-ui.js" >
来源链接
它为我工作
在jquery 1.7+的那一刻,最新的jquery-ui是:
我刚才补充道
1 2 3 4
jQuery.browser = {
msie: false ,
version: 0
} ;
在jquery脚本之后,因为我不再关心IE了。
如果你有两次jQuery定义,那么你可能会得到这个错误。例如,如果您正在使用Primefaces(它已经包含jQuery),您可以在其他地方定义它。
我在使用JQuery 1.10和JQuery UI 1.8时遇到了这个错误。我能够通过更新到最新的JQuery UI 1.11.4来解决此错误。
从Visual Studio更新JQuery UI的步骤:
导航到项目或解决方案
右键单击:"管理NuGet包"
在左侧,单击"已安装的软件包"选项卡
查找"JQuery UI(组合库)",然后单击"更新"
如果找到,请选择它并单击"更新"
如果找不到,请在左侧的"在线> nuget.org"选项卡中找到它,然后单击"安装"。如果旧版本的Jquery UI版本仍然存在,则可以从项目中删除它
使用像打击
我用这个命令解决
"Uncaught TypeError: Cannot read property 'msie' of undefined" Error
1 2 3
if ( /1\.(0|1|2)\.(0|1|2)/ .test ( $.fn .jquery ) || /^1.1/ .test ( $.fn .jquery ) ) {
return ;
}
通过这个命令你检查你的jquery verion befor使用"msie"
使用像打击
。 。 。 。然后在你的函数中你可以使用像msie这样的属性
1 2 3 4 5 6 7
if ( a.browser .msie )
{
}
else
{
$( settings.current ) .after ( Uploadelement) ;
}
祝好运
因为我根本不打算支持旧的MS IE版本,所以我只是用false 替换了对browser.msie 的所有引用。
我知道,这不是一个好的解决方案,但它对我有用。
(实际上,它们显示为!browser.msie ,可以从条件中省略。)