我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
当前回答
有时是因为转换数据类型,例如你有一个对象,你认为是字符串。
套接字。以nodejs客户端的Id为例,它不是一个字符串。要将它作为字符串使用,你必须在前面添加单词string:
String(socket.id);
其他回答
如果您不小心导入/嵌入了相同的JavaScript文件两次,有时会出现这种情况,值得在检查器的资源选项卡中检查。
如果你因为某些原因需要一个无限的进程/递归运行,你可以在一个单独的线程中使用webworker。 http://www.html5rocks.com/en/tutorials/workers/basics/
如果你想操纵dom元素并重新绘制,请使用动画 http://creativejs.com/resources/requestanimationframe/
检查Chrome dev工具栏控制台中的错误细节,这将为您提供调用堆栈中的函数,并指导您找到导致错误的递归。
在我的例子中,我基本上忘记了获取输入的值。
错误的
let name=document.getElementById('name');
param={"name":name}
正确的
let name=document.getElementById('name').value;
param={"name":name}
在我的情况下,我得到这个错误的ajax调用和数据,我试图传递的变量没有定义,这是显示我这个错误,但不是描述变量没有定义。我加上定义了变量n的值。