Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE中的慢速页面卸载_Javascript_Internet Explorer_Dhtml - Fatal编程技术网

Javascript IE中的慢速页面卸载

Javascript IE中的慢速页面卸载,javascript,internet-explorer,dhtml,Javascript,Internet Explorer,Dhtml,我正在开发一个动态创建许多表行的站点。现在行的总数是187。创建行时一切都正常,但在IE中,当我离开页面时,有大量的延迟。我不知道这是否与我在页面中所做的大量DOM操作有什么关系?在构建动态内容的事件处理程序时,我没有创建任何函数闭包,因此我不认为这个问题与内存泄漏有关。非常感谢您的任何见解。您是手动创建元素节点,还是使用innerHTML?虽然我不确定,但我怀疑IE有自己的与HTML节点相关的内存泄漏 我制作了一个演示页面,通过jQuery将187行添加到一个表中。我相信jQuery.appe

我正在开发一个动态创建许多表行的站点。现在行的总数是187。创建行时一切都正常,但在IE中,当我离开页面时,有大量的延迟。我不知道这是否与我在页面中所做的大量DOM操作有什么关系?在构建动态内容的事件处理程序时,我没有创建任何函数闭包,因此我不认为这个问题与内存泄漏有关。非常感谢您的任何见解。

您是手动创建元素节点,还是使用innerHTML?虽然我不确定,但我怀疑IE有自己的与HTML节点相关的内存泄漏

我制作了一个演示页面,通过jQuery将187行添加到一个表中。我相信jQuery.append()使用了一个聪明的小技巧将字符串转换为一组节点。它创建一个div并将该div的innerHTML设置为字符串,然后将该div的所有子节点克隆到指定的节点中,最后删除它创建的div

我在IE8中没有得到任何延迟,但它可能会在您使用的版本中延迟。如果你能让我知道,我会很高兴的!也许我可以再帮点忙

Peace

YUI(可能还有其他一些流行的javascript库)提供了,因此我强烈建议使用YUI或其他具有此功能的库,以最大限度地减少IE的问题。不过,听起来您可能遇到的是速度缓慢,而不是任何内存泄漏问题;您正在将事件处理程序附加到一大堆元素。众所周知,IE6的优化程度较低,所以可能要花很长时间才能将所有东西清理干净


Apace还有一个优点:innerHTML会给您带来麻烦,让您陷入DOM怪圈。听起来JQuery已经解决了这个问题。

试着利用它,用一个事件处理程序替换所有事件处理程序。

我同意porneL。将一个事件处理程序附加到,让冒泡发挥其魔力。大多数框架都提供了一种方法来查找导致原始事件的元素(通常称为“目标”)


如果您使用document.createElement()生成大量元素,则可以将它们添加到DOM片段中。将片段附加到页面时,它会附加附加到该页面的所有子节点。此操作比一次附加一个节点要快。John Resig对DOM文档片段有很好的描述:

关闭选项卡时是否也会出现延迟?您使用的是什么javascript库?我最初创建了一个锚定标记,然后将该锚定标记的单击句柄设置为函数闭包,但我现在重新意识到IEs垃圾收集器不知道循环引用,所以我改变了它,所以现在我创建了一个span,并将其innerHTML设置为锚定标记,我以前使用document.createElement创建的锚定标记,我喜欢你的示例,但你的页面是简单的文本,我在处理的页面上有许多图像等,所以我觉得你的示例与我的实现不可比。