Переполнение стека с помощью $.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
с полезным сообщением.