Webサイトを運用サーバーに展開した後、ページ上のすべてのリンクボタンコントロールが機能しないという問題が発生しています。ここにいくつかの詳細があります:
私たちが開発する環境は3つあります。開発のために実行するためにローカルIIS7を使用するローカルマシン。ファイアウォール(IIS6)の背後にある実際のWebサーバーであるテスト環境。私たちのライブWebサーバー(IIS6)である製品。ウェブサイトはローカルマシンとテストサーバーで正常に動作しますが、本番サーバーのリンクボタンをクリックするとハングします。
問題はChromeには存在しないか、FireFoxにはIE9にのみ存在します。 IE9を互換モードにした場合は存在しません。
IE9 Developerツールバーを使用してスクリプトを監視している場合、リンクボタンの1つをクリックするとすぐに、コンソールに次のエラーが表示されます。
SCRIPT28:スタックスペース不足、340行目9
何かご意見は?提案をありがとう。
人々がコメントで言ったように:それは無限の再帰が起こることを意味します。それが単純な再帰であるか、尾を噛む蛇のようなコード全体の不正な経路であるかどうか-不明なようですが、IEはスタックトレースを出力しないか、そうですか?
次のコードを実行しているときにこの問題を再現しました。
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);
この回答がお役に立てば幸いです。
コード/コードへのリンクを投稿するか、この問題をクローズできますか?
一般的な問題:HTMLにクロージャの問題がある可能性があるため、ブラウザによってHTML階層の解釈が異なるか、またはfor(x in y)をループしている場合があります(xにはyへの後方参照が含まれます)。
このエラーの情報については、 msdnページ を確認してください。私の場合、エラーの原因は次のとおりです。
コードがイベントカスケードをトリガーしました。
イベントカスケードは、すでにスタックにあるイベントプロシージャを呼び出すイベントをトリガーすることによって発生します。 ...
基本的に、私はファイルアップロードコントロールでクリックイベントを使用してクリックイベント(jQueryを使用)をトリガーしようとしていました。無限再帰を引き起こすようです。おそらく、ボタンに同様の問題がある可能性があります。