Internet Explorer での「行 0 のスタック オーバーフロー」
-
03-07-2019 - |
質問
検索性の観点から、ここがこの件について質問するのに理想的な場所ではないことは承知していますが、Internet Explorer で見ると JavaScript コードで「0 行目のスタック オーバーフロー」エラーがスローされるページがあります。
問題は明らかに 0 行目ではなく、ドキュメントに書き込んでいる内容のリストのどこかにあります。Firefox ではすべてが正常に動作するため、トラブルシューティングを手伝ってくれる Firebug や友人の喜びはありません。
これには標準的な原因はありますか?これはおそらく Internet Explorer 7 のバグか、非常にわかりにくい何かだと思います。 Google-fu 今のところ私に小さな喜びをもたらしてくれています。以前にこの問題に遭遇した人はたくさんいますが、どうやって解決したのかは見つかりません。
解決
Internet Explorer内で"スクリプトのデバッグを無効にする"
オプションをオフにし、 Visual Studio
でデバッグを開始できますそれを持っている。
これらの IE
固有の問題のいくつかを診断する数少ない方法の1つであることがわかりました。
他のヒント
最近この問題に遭遇し、この問題を引き起こしているコードの特定のケースに関する投稿を書きました。
簡単な要約:ホストグローバルオブジェクトを通過する再帰は、スタックの深さ13に制限されます。つまり、関数呼び出しが使用する参照(関数自体ではない)が何らかのフォームウィンドウで定義された場合.foo = functionの場合、fooの再帰は深さ13に制限されます。
ああ!
一部のコードに OnError()
イベントがあり、画像ソースが見つからない場合にデフォルトの画像パスに設定していました。もちろん、デフォルトの画像パスが見つからなかった場合、エラーハンドラーがトリガーされます...
同様の問題を抱えているが同じではない人にとって、この原因はおそらく、終了していないループ、それ自体をトリガーするイベントハンドラー、またはJavaScriptエンジンをスピンさせるスローハンドラーであると思われます。
この問題があり、解決しました。 MaintainScrollPositionOnPostback
という名前の<%@ Page
タグに属性があり、それを削除するとエラーが消えました。
各ポストバック後のスクロールを防ぐために、前に追加しました。
セレンテスト内で問題が発生したためにここに来た場合:
IEは By.id(" xyz")
が好きではありません。代わりにBy.name、xpathなどを使用します。
smartNavigation =" true"これが発生します
デフォルトのプロジェクトを設定しましたが、次のことがわかりました:
問題は、smartNavigationとmaintainScrollPositionOnPostBackの組み合わせです。エラーは両方がtrueに設定されている場合にのみ発生します。
私の場合、エラーは以下によって生成されました:
<pages smartNavigation="true" maintainScrollPositionOnPostBack="true" />
他の組み合わせでも問題なく動作します。
誰でもこれを確認できますか?
- インターネット設定
- ツール
- インターネット設定
- 高度な
- ナビゲーションセクション
- > [スクリプトのデバッグを無効にする] をクリックします。
すべてのスクリプト エラーに関する通知を表示する
- サインイン
- きっと笑顔になりますよ!
私は「1行目」でした代わりに...
jQueryの .clone
メソッドを使用すると、この問題が発生しました。 html文字列からjQueryオブジェクトを作成することでこれらを置き換えました: $($(selector).html())
。
IE8でも同じエラーを再現しました。テキストボックスの1つには、無効なデータを置き換えるイベントハンドラーがいくつかあります。
$('.numbersonly').on("keyup input propertychange", function () {
//code
});
このテキストボックスにデータを入力すると、エラーメッセージが表示されました。イベント&quot; propertychange&quot;を削除しました上記のコードから、正しく動作するようになりました。
PS多分それは誰かを助けるでしょう
何を伝えるべきかわかりませんが、jQueryテーブルのソートと検索でも同じ問題が発生しました。 テーブルに何も残っていない場合、たとえば文字列を検索している場合、このエラーも発生します。 Googleアナリティクスでも、このエラーは頻繁に発生します。
私の場合、2つの関数 a()
と b()
がありました。 1つ目は2つ目を呼び出し、2つ目は1つ目を呼び出しました:
var i = 0;
function a() { b(); }
function b() {
i++;
if (i < 30) {
a();
}
}
a();
setTimeout
を使用してこれを解決しました:
var i = 0;
function a() { b(); }
function b() {
i++;
if (i < 30) {
setTimeout( function() {
a();
}, 0);
}
}
a();
これはJavaおよびFlash Playerの問題です。最新のJavaおよびFlash Playerをインストールすると、問題は解決します。そうでない場合は、Mozilla Firefoxをインストールすると、必要なアップデートが自動的にインストールされます。