在调用$.colorbox.resize();
后,我在Firefox和Chrome中获得了堆栈溢出(可能是其他所有内容)。我把问题缩小到了那个方法,没有它,一切都运行正常,虽然模态的大小不对。
Uncaught RangeError: Maximum call stack size exceeded
d.extend.type
d.extend.makeArray
d.fn.d.init
d
g.plugins.fn.clone
a.each.a.fn.(anonymous function)
g.plugins.fn.clone
a.each.a.fn.(anonymous function)
g.plugins.fn.clone
a.each.a.fn.(anonymous function)
g.plugins.fn.clone
a.each.a.fn.(anonymous function)
g.plugins.fn.clone
a.each.a.fn.(anonymous function)
g.plugins.fn.clone
a.each.a.fn.(anonymous function)
...
我刚刚在浏览器的控制台中创建了一些动态颜色框,而不是通过我常用的事件处理程序和方法。每次我尝试$.colorbox.resize()
这些动态彩盒时,都会出现堆栈溢出。这使我认为错误与显示和准备颜色框的任何自定义代码无关。
我正在使用jQuery 1.5.2。
为什么堆栈溢出发生?如何防止它发生?
更新
我的控制流程有一些伪代码:
mouseClickHandler = function()
{
async_method_1(function()
{
someMethod1()
})
}
someMethod1 = function()
{
async_method_2(function()
{
someMethod2()
})
}
someMethod2 = function()
{
$.colorbox.resize();
}
更新2
正如我前面提到的,除了上面的代码之外在控制台中创建颜色框也会导致堆栈溢出。例如,如果我在浏览器的控制台中输入以下两行,我仍然会收到溢出。
$.colorbox({html:'<h1>hello world</h1>'})
$.colorbox.resize()
答案 0 :(得分:2)
我自己想出了这个问题。堆栈溢出正在发生,因为colorbox被包含在页面上两次。一旦我删除了第二个脚本标签,一切都再次出现了。
没有理由为什么任何人都需要包括两次彩盒,但是一个模糊的堆栈溢出并不是对那些意外犯错的可怜的开发者的惩罚:)。我知道colorbox开发人员使用SO。也许,他可以提供冗余故障保护或throw new Error
带有帮助的消息。