Uncaught TypeError:无法读取属性'msie'jQuery工具

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

Uncaught TypeError: Cannot read property 'msie' of undefined

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

我怎样才能避免这个错误呢?

352082 次浏览

这是GitHub上的jQuery工具bug。你可以试试其中一个补丁。

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

$.browser方法在jQuery 1.9中被移除。

jQuery.browser() removed

jQuery.browser()方法自jQuery 1.3以来已弃用,并在1.9中被移除。我们推荐在Modernizr这样的库中使用特征检测。

——jQuery Core 1.9升级指南

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

你可以看看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;
}
})();

参考:

  • < a href = " http://n33.co/2013/03/23/browser-on-jquery-19x-for-legacy-ie-detection " > $。jQuery 1.9浏览器。 . x表示遗留IE检测
因为我根本不打算支持旧的MS IE版本,所以我简单地用false替换了所有对browser.msie的引用。 这不是一个很好的解决方案,我知道,但它适用于我

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

像吹一样吹

$(function (a) {

. . . . .然后在你的函数中,你可以使用msie属性像

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

古德勒克

在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>

这肯定有用。

像吹一样吹

我使用这个命令并求解

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

if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
return;
}

将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>

链接

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

从Visual Studio更新JQuery UI的步骤:

  • 导航到项目或解决方案
  • 右键单击:“管理NuGet包”
  • 在左侧,单击“Installed Packages”选项卡
  • 找到“JQuery UI (Combined library)”,然后单击Update
  • 如果找到,选择它并单击Update
  • 如果没有找到,请在左侧的“Online > nuget.org”选项卡中找到它,然后单击安装。如果旧版本的Jquery UI版本仍然存在,可以将其从项目中删除

我使用下面的代码后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>

如果你定义了两次jQuery,那么你就会得到这个错误。例如,如果你正在使用Primefaces(它已经包含了jQuery),而你在其他地方定义了它。

我只是补充了一句

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

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

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

/* 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;
}
});
});