4

この関数に渡すパラメーターに基づいて、ajax を介して PHP スクリプトから画像 URL を取得する次のコードがあります。その結果、既存の画像がフェードアウト (jQuery) し、src 属性が新しい画像を取得し、画像がフェードインします。これは、Chrome や Firefox などでチャームのように機能しますが、IE9 では次のエラーがスローされます。

「SCRIPT28:スタック領域が不足しています」

IE9 を IE8 または IE7 モードに切り替えると、エラーがまだ表示されても問題なく動作しますが、IE9 では離陸できません。どこが間違っていますか?

function imager(dt){
    $('.ct_img').fadeOut(400);
        var urip = homeURL + '/qwm/CF_QRGR/' + encodeURIComponent(dt) + '/';
        $.ajax({url:urip, success:function(result){
            
            $.doTimeout(400,function(){
                if(result=='0'){
                $('.ct_img').attr('src',homeURL + '/public/img/site/load_fail_message.jpg').bind('load', function (e) {
                    $('.ct_img').fadeIn(400)
                        });
                } else {
                $('.ct_img').attr('src',homeURL + '/public/img/bank/vault/' + result).bind('load', function (e) {
                    $('.ct_img').fadeIn(400)
                        });
                }
                });
                
        }
        });
    
    
}
4

2 に答える 2

1

IE10でさえ、完全な(なし)スタックトレースがまったくないため、デバッグが困難です...このエラーは、他のいくつかの原因で発生する可能性があります:/私の場合、フォームを単一のJSオブジェクトに解析しようとしても、このエラーが発生しますSCRIPT28: イベントが入力にバインドされておらず、イベントをトリガーしていない場合でも、スタック領域が不足しています。

しかし、Browser Mode: IE9 Document Mode: IE7 --- このエラーが発生します (つまり、dell.com で) --- 手動でDocument Mode: IE9に切り替えると、このエラーは消えます...

編集:

私の問題をうまく解決しました:

私が使用していた: console.log(JSON.stringify( object ));

オブジェクトには、選択ボックスからの数千のオプションが含まれていました...そのため、console.logging が多すぎると、SCRIPT28: Out of stack space (特に JSON.stringify と一緒に使用する場合) が発生する可能性があります。

于 2013-01-17T08:58:35.073 に答える
1

イベントバインディングだと思います。イベント バインディングは jQuery なしで機能しますか? .ct_img クラスがたくさんあるのではないでしょうか? これにより、すべての src が置き換えられ、過負荷になっている可能性がありますか? ここでは代わりに ID を使用します

    var img = document.getElementById( "ct_img");
    img.src = url;
    img.onload = function() {
        $('#ct_img').fadeIn(400);
     };

IE に完全なスタック トレースがあるかどうかはわかりませんが、再帰があるかどうかを確認するには、コンソール ログを使用できます

 arguments.callee.caller.name.toString()

どのメソッドがそれを呼び出しているかを確認します。

于 2012-10-08T20:02:05.827 に答える