我在Chrome开发者控制台中收到以下错误:
Uncaught TypeError: Cannot read property 'msie' of undefined
我的理解是,因为.browser
现在在jQuery中已被弃用,但是我使用的是最新版本的jQuery工具,它仍然提供错误,我在js
文件中检查了它在那儿。
如何解决这个问题,以免出错?
答案 0 :(得分:220)
您可以通过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;
}
})();
<强>参考强>:
答案 1 :(得分:180)
自jQuery 1.9起,$.browser
方法已被删除。
自jQuery 1.3以来,
jQuery.browser()
方法已被弃用,并在1.9中被删除。 如果需要,它可以作为jQuery Migrate插件的一部分使用。我们建议对像Modernizr这样的库使用特征检测。
如升级指南中所述,您可以尝试使用jQuery Migrate plugin恢复此功能并让jQuery Tools正常工作。
答案 2 :(得分:43)
在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>
这肯定会有用。
答案 3 :(得分:25)
我在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>
答案 4 :(得分:6)
Here is the jQuery Tools bug on GitHub。您可以尝试其中一个补丁。
编辑 - 它并不像我看起来好像jQuery Tools得到了很多支持。除非我准备自己接管支持,否则我个人不会开始依赖该库的新项目。
答案 5 :(得分: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>
来源link
答案 6 :(得分:0)
由于我根本不打算支持旧的MS IE版本,因此我只是将所有对browser.msie
的引用替换为false
。
我知道,这不是一个好的解决方案,但它对我有用。
(实际上,它们显示为!browser.msie
,可以从条件中省略。)
答案 7 :(得分:0)
使用像打击
$(function (a) {
。 。 。 。 。然后在你的功能中你可以使用msie属性,如
if (a.browser.msie)
{
}
else
{
$(settings.current).after(Uploadelement);
}
古德勒克
答案 8 :(得分:0)
使用像打击
我使用此命令并解决
“未捕获的TypeError:无法读取未定义的属性'msie'”错误
if (/1\.(0|1|2)\.(0|1|2)/.test($.fn.jquery) || /^1.1/.test($.fn.jquery)) {
return;
}
答案 9 :(得分:0)
使用JQuery 1.10和JQuery UI 1.8时出现此错误。我能够通过更新到最新的JQuery UI 1.11.4来解决此错误。
答案 10 :(得分:0)
如果您两次定义了jQuery,则可能会收到此错误。例如,如果您正在使用Primefaces(它已经包含jQuery),并且在其他地方定义它。
答案 11 :(得分:0)
我只是添加了
jQuery.browser = {
msie: false,
version: 0
};
使用jquery脚本后,因为我不再关心IE。
答案 12 :(得分:0)
看到这个问题主要是由于浏览器导航和版本属性引起的。 为此,您必须在函数中添加以下代码:
/* 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;
}
});
});