2012-09-21 180 views
0

我正在運行一小段javascript,它顯示/隱藏大約170個錶行。在IE9中,這是間歇性地導致瀏覽器「停止響應」並死亡。我收到對話,說「Internet Explorer已停止工作......」。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 異常代碼:0000005 故障偏移:0x002cd4e6 出錯進程ID:0x1764 錯誤應用程序啓動時間:0x01cd9725ec072ed0 錯誤的應用程序路徑:C:\ Program Files文件(x86)的\的Internet Explorer \ IEXPLORE.EXE 錯誤模塊路徑:C:\ Windows \ system32 \ MSHTML.dll 報告ID:721 d0e53-03c5-11e2-98c9-005056c00008

在執行重複性任務時是否有其他人遇到過這種行爲?

回答

-1

請不要用遞歸函數 因爲這是不好的做法,代碼中必然會有一些內存泄漏,使用setTimeout(),因此它可能是WITH IE的原因。

+0

遞歸函數是必需的,因爲我有一個包含1000+行的表格,它們以父/子分組格式進行佈局。有4個級別,因此遞歸用於隱藏子行之前隱藏我(如果你知道我的意思)。 它可能是一個表,主要是在錯誤,但這是繼承代碼,需要一個快速修復。 感謝您的回覆。 –