我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
当前回答
如果你因为某些原因需要一个无限的进程/递归运行,你可以在一个单独的线程中使用webworker。 http://www.html5rocks.com/en/tutorials/workers/basics/
如果你想操纵dom元素并重新绘制,请使用动画 http://creativejs.com/resources/requestanimationframe/
其他回答
在我的例子中,我基本上忘记了获取输入的值。
错误的
let name=document.getElementById('name');
param={"name":name}
正确的
let name=document.getElementById('name').value;
param={"name":name}
你可以在crome浏览器中找到你的递归函数,按ctrl+shift+j,然后source选项卡,它会给你代码编译流程,你可以在代码中使用断点。
在你的代码中有一个递归循环(例如,一个函数最终会一次又一次地调用自己,直到堆栈满为止)。
其他浏览器要么有更大的堆栈(所以您会得到一个超时),要么因为某种原因(可能是放置错误的try-catch)而忽略错误。
发生错误时,使用调试器检查调用堆栈。
我们最近添加了一个字段的管理网站,我们正在工作- contact_type…简单的对吧?好吧,如果你调用select“type”,并试图通过jquery ajax调用发送它,它会失败,这个错误深埋在jquery.js中。
$.ajax({
dataType: "json",
type: "POST",
url: "/some_function.php",
data: { contact_uid:contact_uid, type:type }
});
问题是,type:type -我相信是我们将参数命名为“type”-有一个名为type的值变量不是问题。我们将其更改为:
$.ajax({
dataType: "json",
type: "POST",
url: "/some_function.php",
data: { contact_uid:contact_uid, contact_type:type }
});
并相应地重写了some_function.php——问题解决了。
如果你因为某些原因需要一个无限的进程/递归运行,你可以在一个单独的线程中使用webworker。 http://www.html5rocks.com/en/tutorials/workers/basics/
如果你想操纵dom元素并重新绘制,请使用动画 http://creativejs.com/resources/requestanimationframe/