未捕获的TypeError:无法读取未定义的属性“长度”

我有一个插件,可以访问许多元素的length属性。 但是,javascript控制台指向jquery.min.js的第12行。

如何回溯以查找插件中的违规行?

如何回溯以查找插件中的违规行?

firebug是调试这些错误的好方法。

alt text http://blog.getfirebug.com/wp-content/uploads/2010/05/disable-debugger-keyword.png

如果您使用缩小的脚本,任何调试器(如完全最好的firebug)将向您显示相同的有问题的行,并且此信息是无用的(缩小的脚本难以阅读和理解,并且它们写在一行中)。

几乎没有办法解决这样的问题:

  1. 正如我之前所说的那样:为了开发使用而不是缩小脚本,调试器将向您显示意味着什么的行,如果您很幸运,您可以找到非常有用的开发人员评论。
  2. 如果你找不到这个脚本的完整版本,可以使用这样的unminifier: http ://jsbeautifier.org/(粘贴缩小的脚本并单击下面的按钮)。 添加到项目的已编辑脚本并再次运行无效function。 再次调试器会向您显示该行,但这次您将看到一条真实的逻辑行,您可以在大多数情况下了解问题所在。
  3. 调试器将显示哪个脚本引发问题。 检查此脚本是否有任何新版本。 我曾经遇到同样的问题,找到了缩小脚本的行,插件的名称(版权中的几行以上),然后发现有新版本可用。 审查了更改日志,并且:“ 在整个代码中为潜在的未知属性值添加了多个’健全性检查’ ” – headshot :)更新了脚本,从现在开始一切都很好,无需特殊调试花费数小时。
  4. 谷歌你的错误与脚本名称 – 它帮了我很多次..可能你做了,但也许你没有尝试语音标记“” – 谷歌将返回文本中的确切短语页面。

如果您使用Chrome,可以转到"View > Developer > Developer Tools"使用内置的开发人员工具(我更喜欢Firebug)。 控制台中的错误通常会在它之前有一个向右的小箭头,点击它时会显示有关错误的更多详细信息。

Javascript错误不太可能来自库,而是引用该库中的方法/函数的代码,因此您希望查看控制台右侧列出的所有问题行并选择对应的行您编写的代码将是您的问题所在。

通过查看jQuery的源代码,您不太可能找出问题所在。 问题出在您的代码中。 只是jQuery不能使用传递给它的未定义变量。

我经常发现这些模糊的框架错误是AJAX请求错误的结果。 如果是这种情况,您的Developer Tool Of Choice很可能包含一个Network选项卡,这可能会突出显示错误的真正来源。

如果您使用jQuery(或任何JavaScript框架)来处理AJAX请求的结果,则格式化和处理错误都是额外的且经常被忽略的步骤。

除了调试器/ firebug之外,跟踪它的一种简单方法(如果你有一个沙盒版本的站点)是单独注释每个插件并检查错误是否消失。