10

我正在尝试在我的 MVC 4 视图中创建一个 JQGrid 并获得一个

无法获取未定义或空引用的属性“msie”

添加 JQGrid javascript 文件时出错

bundles.Add(new ScriptBundle("~/Bundles/Shared/JS").Include(
            "~/Scripts/jquery-1.9.1.min.js",
            "~/Scripts/jquery.validate.min.js",
            "~/Scripts/bootstrap.js",
            "~/Content/silviomoreto-bootstrap-select/bootstrap-select.min.js",
            "~/Scripts/js/Shared/Index.js",
            "~/Scripts/js/Shared/Validation.js",
            "~/Scripts/jquery.placeholder.js",
            "~/Content/jquery.jqGrid-4.4.3/js/i18n/grid.locale-en.js",
            "~/Content/jquery.jqGrid-4.4.3/js/jquery.jqGrid.min.js"));

错误发生在以下行

e=n.browser.msie&&"6.0"==n.browser.version

知道为什么会这样吗?

4

4 回答 4

19

来自 jQuery 文档jQuery.browser

这个属性在 jQuery 1.9 中被移除并且只能通过 jQuery.migrate 插件使用。请尝试改用特征检测。

因此,您必须使用旧版本的 jQuery 或使用migrate 插件

于 2013-10-14T11:57:47.910 回答
10

我也有类似的问题,因为这个属性在 jQuery 1.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;
   }
})();
于 2016-06-14T08:54:37.200 回答
0

e=n.browser.msie&&"6.0"==n.browser.version

我想应该是这样的

e == n.browser.msie && "6.0"==n.browser.version

e === n.browser.msie && "6.0"=== n.browser.version严格平等

于 2013-10-14T11:59:55.513 回答
0

我的另一个旧脚本也有类似的问题,但是大多数用户将运行 6.0 以上的 IE 版本,所以对我来说支持 6.0 或更低版本真的没什么大不了的。我所做的只是改变说

var isIE6 = ($.browser.msie && &.browser.version < 7);

var isIE6 = false;
于 2014-01-23T01:59:09.207 回答