0

私は、約 170 のテーブル行を表示/非表示にする小さな JavaScript を実行しています。IE9 では、これにより断続的にブラウザーが「応答を停止」し、終了します。「Internet Explorer が動作を停止しました...」というダイアログが表示されます。

Chrome では問題ありません。操作が完了するまでに約 1 秒かかります (IE で動作する場合は 1 ~ 2 秒かかります)。

私が行っているのは、再帰関数でこの行を 170 回呼び出すことだけです (id は、テーブル tr 行のそれぞれを一意に識別する GUID です)。

$("#" + id).css("display", "block");

行を表示する間に 1 ミリ秒のタイムアウトをコードに導入すると、毎回動作します!

setTimeout(function () { $("#" + id).css("display", "block"); }, 1);

jquery show メソッドも試してみました。

また、イベント ログに次のようなエラーが表示されます。

エラーが発生しているアプリケーション名: IEXPLORE.EXE、バージョン: 9.0.8112.16448、タイム スタンプ: 0x4fecf1b7 エラーが発生しているモジュール名: MSHTML.dll、バージョン: 9.0.8112.16448、タイム スタンプ: 0x4fecfb0e 例外コード: 0xc0000005 エラーが発生しているオフセット: 0x002cd4e6 エラーが発生しているプロセス ID: 0x1764アプリケーションの開始時刻: 0x01cd9725ec072ed0 エラーが発生しているアプリケーション パス: C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE エラーが発生しているモジュール パス: C:\Windows\system32\MSHTML.dll レポート ID: 721d0e53-03c5-11e2-98c9-005056c00008

繰り返しのタスクを実行するときに、この種の動作を経験した人はいますか?

4

1 に答える 1

-1

再帰関数を使用しないでください。これは悪い習慣です。 setTimeout() を使用したコードでメモリ リークが発生する必要があるため、WITH IE が原因である可能性があります。

于 2012-09-21T08:23:10.520 に答える