2012-05-08 9 views
0

$.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を使用しています。

なぜスタックのオーバーフローが発生し、どうして私がそれを防ぐことができますか?

UPDATE

そして、私の制御フローのために少しの擬似コード:

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

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

UPDATE 2

私は離れてから、コンソールでカラーボックスを作成し、先に述べたように上記のコードでも、スタックのオーバーフローが発生します。たとえば、次の2行をブラウザのコンソールに入力すると、まだオーバーフローが発生します。

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

コンテキストでどのように使用されていますか?いくつかのコードサンプル? –

+0

@ KyleMacey私は、スタックを示し、メソッドがどのように呼び出されているかを示す擬似コードをいくつか追加しました。それは正気のためにちょっと取り除かれていますが、 '$ .colorbox.resize'が呼び出されたときスタックにあるすべてのメソッドがそこにあります。 – Jeff

答えて

2

私は自分自身で問題を把握しました。 colorboxがページに2回含まれていたため、スタックのオーバーフローが発生していました。一度、私は2番目のスクリプトタグを削除し、すべてが再びpeachyだった。

あり、誰もが二度カラーボックスを含める必要がなければならない理由はない理由はませんが、無名のスタックオーバーフローが誤ってミスを犯した:)貧困、開発者への罰正当化されません。私はカラーボックスの開発者がSOを使っていることを知っていますたぶん、彼は冗長フェールセーフか便利なメッセージでthrow new Errorを入れることができます。

関連する問題