我正在開發一個可以動態創建多個表格行的站點。現在總的行數爲187.創建行時一切正常,但在IE中,當我離開頁面時,存在大量滯後。我不知道這是否與我在頁面中進行繁重的DOM操作有關?構建動態內容的事件處理程序時,我不創建任何函數閉包,所以我不相信這個問題與內存泄漏有關。任何見解都非常感謝。在IE中緩慢卸載頁面
回答
您是手動創建元素節點還是使用innerHTML?儘管我不確定,但我懷疑IE是否有自己的與HTML節點相關的內存泄漏。
我做了一個演示頁面,通過jQuery將187行添加到表中。我相信jQuery.append()使用一個聰明的小技巧將一個字符串轉換爲一組節點。它會創建一個div並將該div的innerHTML設置爲您的字符串,然後在最終刪除創建的div之前,將該div的所有子節點克隆到您指定的節點中。
http://www.andrewpeace.com/stackoverflow/rows/rows.html
我沒有得到在IE8任何滯後,但也許它會在你使用的版本滯後。如果你讓我知道,我會喜歡它!也許我可以幫助更多。
和平
YUI(也可能是其他一些流行的JavaScript庫)提供automatic listener cleanup,所以我強烈建議使用YUI或另一個庫使用此功能,以儘量減少與IE瀏覽器的問題。但是,聽起來您可能會遇到簡單的緩慢而不是任何類型的內存泄漏問題;您將事件處理程序附加到一大堆元素。已知IE6的優化程度並不高,所以它可能只是永遠需要清理一切。
apeace也有一個好點:innerHTML的可以給你帶來麻煩,併爲您設置DOM怪事。這聽起來像JQuery有一個解決方案。
嘗試爲event bubbling優勢只有一個,以取代所有事件處理程序。
我同意porneL。附加一個事件處理程序到<表>,讓冒泡工作的魔力。大多數框架爲您提供了一種找到導致原始事件的元素(通常稱爲「目標」)的方式。
如果您在使用使用document.createElement(),你可以將它們添加到DOM片段賺很多元素。將片段追加到頁面時,會附加連接到它的所有子節點。該操作比一次一個追加每個節點更快。約翰Resig的對DOM文檔片段一個偉大的寫了起來:http://ejohn.org/blog/dom-documentfragments/
- 1. 在IE瀏覽器中緩慢頁面加載
- 2. 緩慢加載JSF頁面
- 3. JSF2緩慢頁面加載
- 4. aspx頁面加載緩慢
- 5. Phantomjs緩慢加載頁面
- 6. HTML頁面卸載不會總是在IE中調用
- 7. 緩慢的nginx頁面加載
- 8. 隨機緩慢加載頁面
- 9. 日誌緩慢加載頁面
- 10. PHP/MySQL - 頁面/排序加載緩慢
- 11. 頁面加載非常緩慢
- 12. Episerver CMS 6緩慢頁面加載
- 13. 非常緩慢卸載果凍豆
- 14. Redshift卸載到S3非常緩慢
- 15. 卸載HTML頁面
- 16. ASP.NET MVC - 在頁面卸載
- 17. 僅在緩慢頁面中激活Xhprof
- 18. 緩慢頁面加載頁面轉換Silverlight Windows Phone
- 19. CSS Pie在IE8中使頁面加載非常緩慢
- 20. 在EC2中加載非常緩慢的Django頁面
- 21. 谷歌字體使頁面加載非常緩慢在中國
- 22. UpdatePanel IE中的緩慢
- 23. 緩慢activeadmin索引頁面
- 24. 頁面間緩慢導航
- 25. jquery卸載頁面效果
- 26. Cordova頁面卸載事件
- 27. 從頁面卸載filepicker
- 28. Dropzone阻止頁面卸載
- 29. 卸載聚合物頁面
- 30. 動態卸載頁面
請問當你關閉選項卡的滯後也發生? – 2009-06-10 23:53:53
沒有它不是 – ForYourOwnGood 2009-06-11 02:04:00