关于javascript:Uncaught TypeError:无法读取未定义的属性’msie’ – jQuery工具

Uncaught TypeError: Cannot read property 'msie' of undefined - jQuery tools


我在Chrome开发者控制台中收到以下错误:

1
Uncaught TypeError: Cannot read property 'msie' of undefined


我的理解是,因为.browser现在在jQuery中已被弃用,但是我使用的是最新版本的jQuery工具,它仍然给出错误,我检查了js文件,它就在那里。


我怎么能解决这个问题呢?它不会给出错误?



您可以通过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检测



从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文件包含之后使用下面的代码,它现在正在工作。

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得到了很多支持。除非我准备自己接管支持,否则我个人不会开始依赖该库的新项目。



用你的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">


来源链接