似乎当我向我的 fancybox 添加一个 afterClose 回调时,我收到了这个错误:
Uncaught RangeError: Maximum call stack size exceeded
这是我使用的代码:
$("a.termsLink").fancybox({
type : 'iframe',
fitToView : false,
width : 450,
height : 600,
afterClose : function(){
$('#regForm').click();
}
});
应该发生的是当 termsLink 框关闭时,regForm 应该打开。我已经过期了不同的回调,但我遇到的问题似乎不受此影响。
解决方案如下所示:
afterClose : function(){
setTimeout(function(){$('#regForm').click();}, 1);
}
然而,这对我来说感觉像是一个非常 hacky 的方法,问题似乎是 fancybox 代码试图在另一个框的动画仍在运行时调用新框,这导致了这个问题。这是 FancyBox 的记录问题吗?或者这是 jQuery 动画事件工作方式的一个函数?这个问题有没有更优雅的解决方案?
最佳答案
如果您使用的是 Twitter Bootstrap < 2.3.1,它会导致这个确切的问题(我刚刚经历过,升级 bootstrap 解决了这个问题)
关于javascript - Fancybox 递归导致堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9916239/