201

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

Uncaught TypeError: Cannot read property 'msie' of undefined

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

我怎样才能解决这个问题,所以它不会给出错误?

4

13 回答 13

278

您可以通过 AJ 查看此解决方案。这很简单,只需复制并粘贴以下代码行。

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;
    }
})();

参考

于 2013-06-06T21:59:38.377 回答
198

自 jQuery 1.9 起,该$.browser方法已被删除。

jQuery.browser() removed

jQuery.browser()方法自 jQuery 1.3 以来已被弃用,并在 1.9 中被删除。如果需要,它可以作为 jQuery Migrate 插件的一部分使用。我们建议将特征检测与 Modernizr 等库一起使用。

jQuery 核心 1.9 升级指南

如升级指南中所述,您可以尝试使用jQuery Migrate 插件来恢复此功能并让 jQuery 工具正常工作。

于 2013-02-17T16:50:07.243 回答
51

在您的 jsp/js 文件中使用以下脚本标记:

<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

这肯定会奏效。

于 2014-07-03T12:42:41.097 回答
34

我在 js 文件包含之后使用下面的代码,它现在可以工作了。

<script src="js/jquery-ui.min.js" type="text/javascript"></script>
<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;
        }
    })();
</script>
于 2016-08-30T11:06:56.480 回答
10

我只是添加了

jQuery.browser = {
    msie: false,
    version: 0
};

在 jquery 脚本之后,因为我不再关心 IE。

于 2019-06-28T05:42:01.780 回答
7

这是 GitHub 上的 jQuery 工具错误。您可以尝试其中一个补丁。

编辑——在我看来,jQuery 工具并没有得到太多支持。除非我准备好自己接管支持,否则我个人不会开始依赖该库的新项目。

于 2013-02-17T16:36:17.353 回答
3

因为我根本不打算支持旧的 MS IE 版本,所以我只是简单地将所有browser.msiefalse. 我知道,这不是一个好的解决方案,但它对我有用。

(实际上,它们显示为!browser.msie,可以从条件中省略。)

于 2013-09-02T20:28:43.083 回答
3

将您的 JS 替换为

<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

来源链接

于 2015-08-26T11:23:02.253 回答
1

看到这个问题主要是由于浏览器导航和版本属性引起的。为此,您必须在函数中添加以下代码:

/* solution to undefined msie */
jQuery.browser = {};
jQuery.browser.msie = false;
    jQuery.browser.version = 0;
    if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
        jQuery.browser.msie = true;
        jQuery.browser.version = RegExp.$1;
    }
/* solution to undefined msie */    

例如,我在点击功能上使用它,请参阅:

 $(document).on('click', '.remove_add_test', function() {
    var product_id = $(this).data('id');
    var thisproduct = $(this);
    
    /* solution to undefined msie */
    jQuery.browser = {};
    jQuery.browser.msie = false;
        jQuery.browser.version = 0;
        if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
            jQuery.browser.msie = true;
            jQuery.browser.version = RegExp.$1;
        }
    /* solution to undefined msie */    
    
    jConfirm('Are you sure you want to delete record?', 'Remove Product', function(r) {
        if (r == true) {
            $.ajax({
                type: 'POST',
                url: 'scripts/ajax/index.php',
                data: {
                    method: 'removeproduct_fromcart',
                    id: product_id
                },
                dataType: 'json',
                success: function(data) {
                    if (data.RESULT == 0) {
                        $(".price span").text(data.totalprice);
                        $(thisproduct).closest('tr').remove();
                        $(".cart-number").text(data.productcount - 1);
                        $.growl.notice({
                            title: "Shopping Cart",
                            message: data.MSG
                        });
                       location.reload();
                        // window.location.href = 'https://www.youth-revisited.co.uk/payment.html';

                    }
                    // window.location.href = 'https://www.youth-revisited.co.uk/payment.html';
                }
            });
            // window.location.href = 'https://www.youth-revisited.co.uk/payment.html';

        } else {
            return false;
        }
    });
});
于 2021-03-25T04:52:42.913 回答
0

像打击一样使用

$(function (a) {

. . . . .then 在您的函数中,您可以使用 msie 属性,例如

if (a.browser.msie) 
{
}
else 
{
   $(settings.current).after(Uploadelement);
}

祝你好运

于 2013-09-05T12:12:36.777 回答
0

像打击一样使用

我使用这个命令并解决

“未捕获的类型错误:无法读取未定义的属性‘msie’”错误

if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
    return;
}
于 2015-06-09T12:21:25.363 回答
0

我在使用 JQuery 1.10 和 JQuery UI 1.8 时遇到了这个错误。我能够通过更新到最新的 JQuery UI 1.11.4 来解决这个错误。

从 Visual Studio 更新 JQuery UI 的步骤:

  • 导航到项目或解决方案
  • 右键单击:“管理 NuGet 包”
  • 在左侧,单击“已安装的软件包”选项卡
  • 查找“JQuery UI(组合库)”并单击更新
  • 如果找到,选择它并单击更新
  • 如果找不到,请在左侧的“在线 > nuget.org”选项卡中找到它,然后单击安装。如果 Jquery UI 版本老版本还存在,可以从项目中删除
于 2015-12-21T14:42:22.610 回答
0

如果您定义了两次 jQuery,那么您可能会收到此错误。例如,如果您正在使用 Primefaces(它已经包含 jQuery)并且您在其他地方定义它。

于 2018-12-04T02:26:38.363 回答