2

我犹豫要不要再问一个“递归太多”的问题,但我完全迷失了想法。

我在 .ready() 期间收到“递归过多”错误,这是无益的发生:

  • 对我来说非常偶尔(即每月一次)
  • 几乎每隔一段时间我就必须使用别人的电脑做一个演示(当然)
  • 在 FF、Chrome、IE9 等,在我们的开发、生产和测试系统上

它被深深地困在 jQuery (1.10.2) 的内部。具体来说,在Sizzle 的这一行,在 Sizzle.attr 中。

我试图通过使用低内存虚拟机来“强制”这个错误出现,但这似乎没有帮助。我不知道如何找到发生这种情况的位置,因为我无法获得堆栈跟踪。我也没有最小的例子,因为我不能让这个错误发生。

最有可能的候选者是在其处理程序中触发一个事件,但我看不出这只会在加载时发生?

我如何尝试找出正在发生的事情?

欢迎任何帮助或提示或链接。如果有用,我会使用 jQuery、jQuery UI 和 OpenLayers。

4

1 回答 1

0

当查看调用链出错时,请尝试查看 JS 堆栈跟踪 - 对于递归问题,这应该向您展示什么是递归的。您可以使用浏览器中的开发工具看到这一点,例如在 Firefox 中使用 Firebug 的“脚本”选项卡并使用“堆栈”输出选项卡。

刚刚注意到您说过您试图获取堆栈跟踪。尝试在您知道不好的行放置一个断点并查看堆栈跟踪以查看它是否/何时似乎递归到该行上方的某个函数。

于 2013-06-26T05:35:06.997 回答