Переполнение стека с помощью $.colorbox.resize

Я получаю переполнение стека в Firefox и Chrome (и, вероятно, все остальное) после вызова $.colorbox.resize();, Я сузил проблему до этого метода, и без него все работает нормально, хотя модальный размер неправильный.

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() эти динамические colorboxes, я получил переполнение стека. Это заставляет меня думать, что ошибка не зависит от любого пользовательского кода, который отображает и подготавливает палитры цветов.

Я использую jQuery 1.5.2.

Почему происходит переполнение стека и как я могу предотвратить это?

ОБНОВИТЬ

И небольшой псевдокод для моего потока управления:

mouseClickHandler = function()
{
    async_method_1(function()
    {
        someMethod1()
    })
}

someMethod1 = function()
{
    async_method_2(function()
    {
        someMethod2()
    })
}
someMethod2 = function()
{
    $.colorbox.resize();
}

ОБНОВЛЕНИЕ 2

Как я уже упоминал ранее, создание colorbox в консоли помимо приведенного выше кода также приводит к переполнению стека. Например, если я введу следующие две строки в консоль браузера, я все равно получу переполнение.

$.colorbox({html:'<h1>hello world</h1>'})
$.colorbox.resize()

1 ответ

Решение

Я разобрался в проблеме сам. Произошло переполнение стека, потому что colorbox был включен на страницу дважды. Как только я удалил второй тег сценария, все снова стало превосходным.

Нет никаких причин, по которым кому-то нужно было бы включать colorbox дважды, но неясное переполнение стека не является оправданным наказанием для плохого разработчика, который случайно допустил ошибку:). Я знаю, что разработчик colorbox использует SO. Возможно, он может поставить в резерв избыточный или throw new Error с полезным сообщением.

Другие вопросы по тегам