我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
我正在使用直接Web Remoting (DWR) JavaScript库文件,只在Safari(桌面和iPad)中得到一个错误
它说
超过最大调用堆栈大小。
这个错误到底是什么意思,它是否完全停止处理?
Safari浏览器也有任何修复(实际上是在iPad Safari上,它说
JS:执行超时
我认为这是相同的调用堆栈问题)
当前回答
在我的例子中,我发送的是输入元素而不是它们的值:
$.post( '',{ registerName: $('#registerName') } )
而不是:
$.post( '',{ registerName: $('#registerName').val() } )
这冻结了我的Chrome标签到一个点,它甚至没有显示我的“等待/杀死”对话框,当页面变得无响应…
其他回答
在我的例子中,click事件在子元素上传播。所以,我不得不写以下内容:
e.stopPropagation ()
点击事件:
$(document).on("click", ".remove-discount-button", function (e) {
e.stopPropagation();
//some code
});
$(document).on("click", ".current-code", function () {
$('.remove-discount-button').trigger("click");
});
下面是html代码:
<div class="current-code">
<input type="submit" name="removediscountcouponcode" value="
title="Remove" class="remove-discount-button">
</div>
检查Chrome dev工具栏控制台中的错误细节,这将为您提供调用堆栈中的函数,并指导您找到导致错误的递归。
你可以在crome浏览器中找到你的递归函数,按ctrl+shift+j,然后source选项卡,它会给你代码编译流程,你可以在代码中使用断点。
几乎每个答案都说这只能由无限循环引起。这是不正确的,否则您可以通过深度嵌套调用溢出堆栈(并不是说这是有效的,但它肯定是在可能的范围内)。如果你可以控制你的JavaScript虚拟机,你可以调整堆栈大小。例如:
节点——时= 2000
请参见:如何在Node.js中增加最大调用堆栈大小
在我的例子中,在app。module中。ts,我得到这个错误,因为我在imports和entryComponents中声明了组件。
Example:
import { MyComponent } from '....';
@NgModule({
declarations: [
MyComponent
],
imports: [
MyComponent -- > remove this from here!!!!
],
providers: [],
bootstrap: [AppComponent],
entryComponents: [MyComponent]
})
export class AppModule { }