0

我正在运行一小段 javascript,它显示/隐藏大约 170 个表行。在 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() 的代码中肯定存在一些内存泄漏,所以这可能是使用 IE 的原因。

于 2012-09-21T08:23:10.520 回答