web-dev-qa-db-ja.com

IE9を使用するWebサイトの「SCRIPT28:Out of stack space」

Webサイトを運用サーバーに展開した後、ページ上のすべてのリンクボタンコントロールが機能しないという問題が発生しています。ここにいくつかの詳細があります:

  1. 私たちが開発する環境は3つあります。開発のために実行するためにローカルIIS7を使用するローカルマシン。ファイアウォール(IIS6)の背後にある実際のWebサーバーであるテスト環境。私たちのライブWebサーバー(IIS6)である製品。ウェブサイトはローカルマシンとテストサーバーで正常に動作しますが、本番サーバーのリンクボタンをクリックするとハングします。

  2. 問題はChromeには存在しないか、FireFoxにはIE9にのみ存在します。 IE9を互換モードにした場合は存在しません。

  3. IE9 Developerツールバーを使用してスクリプトを監視している場合、リンクボタンの1つをクリックするとすぐに、コンソールに次のエラーが表示されます。

SCRIPT28:スタックスペース不足、340行目9

  1. 私はかなりの量のJQueryを使用していて、これが問題を引き起こしているのではないかと思っています。しかし、JavaScriptエラーは表示されません。

何かご意見は?提案をありがとう。

24
MissioDei

人々がコメントで言ったように:それは無限の再帰が起こることを意味します。それが単純な再帰であるか、尾を噛む蛇のようなコード全体の不正な経路であるかどうか-不明なようですが、IEはスタックトレースを出力しないか、そうですか?

9
dmitry

次のコードを実行しているときにこの問題を再現しました。

HTML

<span class="search-icon"><input title="search" type="submit" value=""></span>

JS

(function($) {
    $('.search-icon').on('click', function(e) {
        // The click event will call  $('.search-icon').on('click', function(e) { .. } for every time
        // which make an infinte loop in click event as long as there are no stop condition added here.
        $(this).find('input').click();
    });
})(jQuery);

JSコードを次のように変更して、この問題を解決しました。

(function($) {
        $('.search-icon').on('click', function(e) {
            $(this).closest('form').submit();
        });
})(jQuery);

この回答がお役に立てば幸いです。

2

コード/コードへのリンクを投稿するか、この問題をクローズできますか?

一般的な問題:HTMLにクロージャの問題がある可能性があるため、ブラウザによってHTML階層の解釈が異なるか、またはfor(x in y)をループしている場合があります(xにはyへの後方参照が含まれます)。

1
ledlogic

このエラーの情報については、 msdnページ を確認してください。私の場合、エラーの原因は次のとおりです。

コードがイベントカスケードをトリガーしました。
イベントカスケードは、すでにスタックにあるイベントプロシージャを呼び出すイベントをトリガーすることによって発生します。 ...

基本的に、私はファイルアップロードコントロールでクリックイベントを使用してクリックイベント(jQueryを使用)をトリガーしようとしていました。無限再帰を引き起こすようです。おそらく、ボタンに同様の問題がある可能性があります。

1
Nick Rolando