【问题标题】:How do I determine exactly which method throws this error: Javascript: Object doesn't support this property or method如何准确确定引发此错误的方法:Javascript:对象不支持此属性或方法
【发布时间】:2013-07-27 04:05:55
【问题描述】:

我正在尝试从旧版本升级到 JQuery 1.10。不幸的是,升级会导致以前工作的代码失败并出现此错误:

Microsoft JScript 运行时错误:对象不支持此属性或方法

不幸的是,消息并没有准确地告诉我是哪个方法或属性导致了这个错误。

例如,我在尝试调用对话框来显示时遇到此错误:

$('#RepSearchDialog').dialog({
      autoOpen: true,
      width: 1050,
      height: 500,
      resizable: false,
      title: 'Rep Search',
      modal: true,
      open: function () {
        ClearRepSearchCriteriaFields();
        ClearRepSearchResults();
        $('.ui-dialog-titlebar').hide();
        $('#RepSearchStoreId').val($('#StoreId').val());
        $('#RepSearchStoreId').focus();
        $('input[name="RepSearchOption"]:checked').removeAttr('checked');
        $('input[name="RepSearchOption"]')[4].checked = true;

        window.RepSearchDialog_SearchForReps();
      }
    });

对我来说,哪个属性或方法调用导致对话框调用失败并不明显。如何获取有关导致此失败的确切属性或方法的信息?

这让升级变得非常非常痛苦。

【问题讨论】:

  • 按 F12 并使用内置调试控制台获取行号。
  • Kevin,它只是将我指向我上面列出的代码行。然后它说,“Uncaught TypeError: Object [object Object] has no method 'dialog'” 嗯?那么为什么 .dialog() 不再起作用了呢?什么鬼?
  • 某事干扰了$("#RepSearchDialog") 返回正确的 jQuery 对象。要么,要么你没有成功加载 jQuery UI(也许你也需要升级它)。
  • “我在上面列出的那行代码” 我看到了 19 行代码,没有一个……我错过了什么吗?更改为$('#RepSearchDialog').dialog() 会改变错误吗?
  • @Barmar 我升级了 jquery.ui 但显然我没有正确完成它。我必须向 jquery.ui.dialog.js 添加一个引用。现在我得到另一个错误:对象函数 (e,t){return new x.fn.init(e,t,r)} has no method 'widget' jquery.ui.dialog.js:38.我已将 ref 添加到小部件但仍然错误。这很痛苦。

标签: javascript jquery asp.net-mvc-3


【解决方案1】:

听起来您已经分段下载了 jQueryUI,但遗漏了一些片段。尝试从 CDN 拉取,看看是否能解决问题:

// pull from MS' CDN
<script src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.10.3/jquery-ui.js"></script>

如果解决了问题,那么要么将整个库拉下来以在本地加载,要么使用download builder 来获取您需要的部分(并且不要取消选中依赖项!)

【讨论】:

  • 好像是这样。我从 JQuery UI 站点下载。大约有 20 多个文件,显然我需要为我现在要使用的每个“小部件”包含一个引用,而不是简单地向单个 .ui.js 文件添加一个引用。我首先遇到了 DatePicker 的错误,然后是 Dialog,然后是一个 Button……我还有一个错误,我不太明白第一次加载页面的时间,但主要问题似乎通过包含所有的 refs 来解决控件。谢谢。
  • 好吧,使用下载构建器,当您只选择您需要的那些时,它仍然应该构建一个仅包含您选择的小部件的 jQuery.ui.js 文件。例如,我的一个项目中有一个jquery-ui-1.10.3.custom.js 文件,其中仅包含datepickerautocomplete
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
相关资源
最近更新 更多