javascript - Fancybox 递归导致堆栈溢出

标签 javascript jquery jquery-plugins fancybox jquery-events

似乎当我向我的 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 解决了这个问题)

此处有更多详细信息:https://github.com/fancyapps/fancyBox/issues/519

关于javascript - Fancybox 递归导致堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9916239/

相关文章:

jquery - 如何更改 jQuery-UI 选项卡的字体大小以及选项卡宽度和高度

javascript - 在 ES6 中,如何将额外的参数传递给 .then() 调用中的函数?

javascript - 测试 jquery 点击回调

javascript - 标签过滤

javascript - Puppeteer pdf 分页错误

jquery - 同步三个ajax请求

javascript - jQuery select2 : duplicate tag getting recreated

jquery - 不透明度动画在 jQuery 和 CSS 中不起作用

javascript - 合并 jQuery 插件文件会产生错误

css - Twitter Bootstrap 2.1 affix-plugin 无法正常工作