web-dev-qa-db-ja.com

Internet Explorerの「行0のスタックオーバーフロー」

これは検索性の観点からこれについて尋ねるのに理想的な場所ではないことを理解していますが、Internet Explorerで見るとJavaScriptコードが「行0のスタックオーバーフロー」エラーをスローするページがあります。

問題は明らかに0行目ではなく、文書に書いているもののリストのどこかにあります。 Firefoxではすべてが正常に動作するため、トラブルシューティングを支援するFirebugや友人の喜びはありません。

これの標準的な原因はありますか?これはおそらくInternet Explorer 7のバグか、かなり不明瞭なものだと思います。私の Google-f は、現在私に少しの喜びをもたらしています。私は以前にこれに遭遇した多くの人々を見つけることができますが、彼らがそれをどのように解決したか見つけることができないようです。

38
glenatron

Internet Explorerの内部でoff"Disable Script Debugging"オプションを有効にし、たまたま持っている場合はVisual Studioでデバッグを開始できます。

これらのIE固有の問題のいくつかを診断する数少ない方法の1つであることがわかりました。

17
Mitchel Sellers

私は最近この問題に遭遇し、この問題を引き起こしているコードの特定のケースに関する投稿を書きました。

http://cappuccino.org/discuss/2010/03/01/internet-Explorer-global-variables-and-stack-overflows/

簡単な要約:Hostグローバルオブジェクトを通過する再帰は、スタックの深さ13に制限されています。つまり、関数呼び出しが使用している参照(関数自体ではない)がwindow.foo =という形式で定義されている場合関数、その後のfooの再帰は13の深さに制限されます。

32
Ross Boucher

あぁ!

いくつかのコードにOnError()イベントがあり、画像ソースが見つからない場合にデフォルトの画像パスに設定していました。もちろん、デフォルトの画像パスが見つからなかった場合、エラーハンドラーがトリガーされます...

同じような問題はあるが同じではない人にとって、この原因はおそらく、終了していないループ、それ自体をトリガーするイベントハンドラー、またはJavaScriptエンジンをスピンさせる類似のもののいずれかであると考えられます。

20
glenatron

この問題があり、解決しました。 MaintainScrollPositionOnPostbackという名前の<%@ Pageタグに属性があり、それを削除した後、エラーが消えました。各ポストバック後のスクロールを防ぐために、前に追加しました。

7
massoud

Seleniumテスト内で問題が発生したためにここに来た場合:IEはBy.id("xyz")が好きではありません。By.name、xpathなどを使用してください。

3
devsnd

また、smartNavigation = "true"があると、これが発生します "

2
CDev

デフォルトのプロジェクトを設定しましたが、次のことがわかりました。

問題は、smartNavigationとmaintainScrollPositionOnPostBackの組み合わせです。このエラーは、両方がtrueに設定されている場合にのみ発生します。

私の場合、エラーの原因は次のとおりです。

<pages smartNavigation="true" maintainScrollPositionOnPostBack="true" />

その他の組み合わせは問題なく機能します。

誰でもこれを確認できますか?

2
Tillito
  1. インターネット設定
  2. 道具
  3. インターネット設定
  4. 高度な
  5. ナビゲーションセクション
  6. クリック>スクリプトのデバッグを無効にする

    すべてのスクリプトエラーに関する通知を表示する

  7. サインイン
  8. あなたは笑顔になります!
1

代わりに「1行目」でしたが...

JQueryの_.clone_メソッドを使用すると、この問題が発生しました。 html文字列$($(selector).html())からjQueryオブジェクトを作成して、これらを置き換えました。

1
Muhd

IE8でも同じエラーを再現しました。テキストボックスの1つには、無効なデータを置き換えるイベントハンドラーがいくつかあります。

$('.numbersonly').on("keyup input propertychange", function () {
    //code
});

このテキストボックスにデータを入力すると、エラーメッセージが表示されました。上記のコードからイベント「propertychange」を削除し、現在は正常に動作するようになりました。

追伸多分それは誰かを助けるでしょう

1
Max

私の場合、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();
0
lord_t

何を言えばいいのかわかりませんが、jQueryテーブルのソートと検索でも同じ問題が発生しました。たとえば、文字列を検索しているテーブルに何も残っていない場合、このエラーも発生します。 Googleアナリティクスでも、このエラーは頻繁に発生します。

0
FasoService