我有一个插件可以访问许多元素上的length
属性。但是,JavaScript控制台指向jquery.min.js的第12行。未捕获TypeError:无法读取未定义的属性“长度”
我该如何回溯到我的插件中查找违规行?
我有一个插件可以访问许多元素上的length
属性。但是,JavaScript控制台指向jquery.min.js的第12行。未捕获TypeError:无法读取未定义的属性“长度”
我该如何回溯到我的插件中查找违规行?
如果使用缩小的脚本任何调试器(如完全最好的萤火虫)会告诉你同样的问题的行并将此信息是无用的(精缩脚本难以阅读和理解,他们都写在1线)。
一些方法来解决这样的问题:
如果您使用Chrome,您可以使用内置的开发人员工具(我更喜欢使用Firebug),请转至"View > Developer > Developer Tools"
。在控制台中的错误往往会有一个向前的小箭头,当点击它时会显示有关错误的更多详细信息。
Javascript错误不可能起源于库,而是引用该库中的方法/函数的代码,因此您希望查看控制台右侧列出的所有问题行并选择与你写的代码相对应的行将成为你的问题所在。
您不太可能通过查看jQuery的源代码来找出问题出在哪里。问题出在你的代码中。只是jQuery不能使用你传递给它的未定义变量。
我重新描述了我可能含糊不清的问题。我明白错误不是来自图书馆;我只是想知道如何回溯到我的插件中查找有问题的行。 – 2013-03-23 19:53:37
@maček我的回答在这方面对你有帮助吗?我希望如此,这是我的意图。 – 2013-03-24 20:02:57
除了调试器/萤火虫,一种简单的方法来追踪(如果你有一个沙盒版本的网站)是单独注释每个插件,并检查错误是否消失。
我经常发现这些模棱两可的框架错误是AJAX请求错误的结果。如果是这样,那么您的开发人员工具最有可能包含一个网络选项卡,这可能会突出显示错误的真正来源。
如果您使用jQuery(或任何JavaScript框架)来处理AJAX请求的结果,则格式和处理错误都是额外的且经常被忽略的步骤。
这听起来像我所需要的,因为在我的情况下,导致“Uncaught TypeError:无法读取属性长度”未定义“err是我自己的: alert(listId.length> 0?”匹配项目的ID:“+ id:“找不到匹配的项目!”); ...但网络选项卡没有显示任何东西(CDT)。 – 2015-10-13 22:32:42
我有萤火虫,但我应该把'debugger'关键字放在我的脚本中?猜/检查? – 2010-06-14 19:15:52
@macek:参见使用Firebug调试JavaScript:http://thecodecentral.com/2007/08/01/debug-javascript-with-firebug – Sarfraz 2010-06-14 20:27:53