【问题标题】:ASP MVC3 app throws JScript errors in IE8 but works in FireFox 4ASP MVC3 应用程序在 IE8 中引发 JScript 错误,但在 FireFox 4 中有效
【发布时间】:2011-06-24 05:09:37
【问题描述】:

我有一个在 FireFox 4 中运行良好(在 VS 2010 调试中)的 ASP MVC3 应用程序,但是当我在 IE8 中运行该应用程序时,我在 jquery-1.5.1 和 jquery.validate.unobtrusive 中遇到一堆 JScript 错误。

在我的 _SiteLayout.cshtml 中,我包含这样的 JavaScript:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>     
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/QMSCommon.js")" type="text/javascript"></script>  

...

<!--bottom of layout page - just before /body -->
@(Html.Telerik().ScriptRegistrar().jQuery(false).DefaultGroup(group => group.Combined(true).Compress(true))) 

当我在 IE8 中运行此应用程序时,我立即在 jquery.validate.unobtrusive.min.js 中收到“Microsoft JScript 运行时错误:'undefined' is null or not an object”。如果我继续,我会在 JQuery-1-5-1 中收到“Microsoft JScript 运行时错误:对象不支持此属性或方法”。

我是否包含正确的 JS 文件 - 顺序是否正确(或重要)?

更新:

我已将问题隔离到我的 Javascript(在 QMSCommon.js 中)。该文件的全部内容在这里:

$(document).ready(function () {
    //Make fields set to datePicker css class have a datepicker control
        $('.datePicker').datepicker(
            { buttonImage: '/content/images/calendar_edit.png',
              buttonImageOnly: true,
              showOn: 'both'
          }); 
});

如果我注释掉 datepicker 部分,我的网站可以在 IE8 中运行。你有没有看到 IE8 不喜欢这段代码的地方?

【问题讨论】:

  • 旁注:telerik 有一些很棒的工具,但是在运行时组合和缩小你的脚本是对系统资源的巨大浪费。你看过Chirpy吗? - 我与他们没有任何关系。您可以在构建时混合/缩小您的 css 和 JS,并且可以拥有随之而来的所有甜蜜的爱好,而无需在运行时执行时大惊小怪。
  • @rock - 感谢您的提示 - 我会检查一下!
  • 只是说,我在使用 jquery.dataTables.min.js 时遇到了同样的错误,经过多年的搜索,我意识到我的网格的列多于数据单元格(即最后一列未填充) .叹息...希望它能拯救我失去的所有时间。

标签: jquery asp.net-mvc-3 internet-explorer-8


【解决方案1】:

好吧,这有点尴尬。最初的问题是由于我没有包含 jquery-ui 脚本:-)。 Firefox 没有抛出错误,IE 确实抛出了错误,但不是在 .datepicker 而是在 jQuery 深处的某个地方,这让我很失望。无论如何。

此外,我已经更新了我的代码以从 Google 获取 JQuery 内容:

效果很好。

【讨论】:

  • 你能详细说明 jquery-ui 脚本的东西吗?
  • 我没有在我的网站上部署 JQuery 脚本文件,而是执行以下操作:
【解决方案2】:

我建议使用 console.log 语句来查看为什么某些内容意外为空。检查调试器以查看堆栈跟踪。这可能会有所帮助。从你所展示的内容中不可能告诉你更多。但是单步执行或使用控制台语句来查看 Firefox 或 Chrome 和 IE8 中的偏差将帮助您解决此问题。

我注意到的一件事是,IE 8 渲染事物的速度要慢得多,因为它与 null 相关,而它不在其他浏览器中,这可能是因为对执行时间的假设。这可能是一个问题,您只需要使用 setTimeout 或 _.defer (如果您使用下划线)来延迟 JavaScript 执行。

如果您遇到更多麻烦,请更新问题或发表评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多