我正在开发一个动态创建许多表格行的网站。目前总行数为187行。在创建这些行时,一切都很正常,但是当我离开页面时,在IE浏览器中会出现大量的延迟。我不知道这是否与我在页面中进行的DOM操作有关?在构建动态内容的事件处理程序时,我没有创建任何函数闭包,因此我不认为这个问题与内存泄漏有关。非常感谢您的帮助。
我正在开发一个动态创建许多表格行的网站。目前总行数为187行。在创建这些行时,一切都很正常,但是当我离开页面时,在IE浏览器中会出现大量的延迟。我不知道这是否与我在页面中进行的DOM操作有关?在构建动态内容的事件处理程序时,我没有创建任何函数闭包,因此我不认为这个问题与内存泄漏有关。非常感谢您的帮助。
http://www.andrewpeace.com/stackoverflow/rows/rows.html
我在IE8中没有遇到任何延迟,但也许你使用的版本会有延迟。如果可以的话,希望你能告诉我!也许我可以提供更多帮助。
祝好
我同意porneL的观点。将一个事件处理程序附加到<table>,让冒泡起作用。大多数框架都提供了一种方法,让您找到引起原始事件的元素(通常称为“目标”)。
如果您使用document.createElement()创建了许多元素,则可以将它们添加到DOM片段中。当您将片段附加到页面时,它会附加到所有附加到它的子节点。这个操作比逐个附加每个节点要快。John Resig在DOM文档片段上有一个很好的写作:http://ejohn.org/blog/dom-documentfragments/
YUI(以及其他一些流行的JavaScript库)提供{{link1:自动侦听器清理}},因此我强烈建议使用具有此功能的YUI或其他库,以最小化IE的问题。 但是,听起来您可能正在经历普通的缓慢而不是任何类型的内存泄漏问题; 您正在将事件处理程序附加到许多元素。 IE6众所周知不够优化,因此它可能需要很长时间才能清理所有内容。
apeace也有一个很好的观点:innerHTML可能会让您陷入麻烦并设置DOM怪异性。 听起来JQuery已经解决了这个问题。