我使用的是Direct Web Remoting (DWR) JavaScript库文件,并且只在Safari (桌面和iPad)中遇到错误。
上面写着
超出了
最大调用堆栈大小。
这个错误到底是什么意思,它会完全停止处理吗?
还有任何针对Safari
浏览器的修复(实际上是在iPad Safari
上,它说
JS:执行超时
我假设这是相同的调用堆栈问题)
发布于 2011-05-23 18:05:44
这意味着在您的代码中的某个地方,您正在调用一个函数,而该函数又调用另一个函数,依此类推,直到您达到调用堆栈限制。
这几乎总是因为一个具有基本情况的递归函数没有得到满足。
查看堆栈
考虑下面的代码。
(function a() {
a();
})();
下面是经过几次调用后的堆栈...
正如您所看到的,调用堆栈不断增长,直到达到一个限制:浏览器硬编码的堆栈大小或内存耗尽。
为了修复它,请确保您的递归函数具有能够满足的基本情况……
(function a(x) {
// The following condition
// is the base case.
if ( ! x) {
return;
}
a(--x);
})(10);
发布于 2012-04-23 09:58:01
如果你不小心导入/嵌入了同一个JavaScript文件两次,你有时会得到这个错误,值得在检查器的资源标签中查看一下。
发布于 2016-08-14 07:55:36
在我的例子中,我发送的是输入元素,而不是它们的值:
$.post( '',{ registerName: $('#registerName') } )
而不是:
$.post( '',{ registerName: $('#registerName').val() } )
这冻结了我的Chrome标签,当页面变得没有响应时,它甚至没有显示‘等待/杀死’对话框。
https://stackoverflow.com/questions/6095530
复制相似问题