2012-10-16 84 views
1

我有一个单页面应用程序,它可以根据用户输入创建和删除一些iframe。每个iframe可以包含一个jqgrid,一个用jquery.validate插件等提交输入的表单...删除iframe会导致内存泄漏?

主页面可以访问所有的iframe来检索当前的操作状态和一些数据来重建主菜单。

是安全的只是删除iframes或我需要.empty()身体之前删除它们?

编辑:

当我说“检索当前运行状态及一些数据,”其实,我使用这样的事情

jqueryFrameObject[0].contextWindow.myCoolProperty 

访问iframe的属性,但从来没有缓存的对象在主网页

回答

2

否:jQuery负责删除可能导致内存泄漏的元素:

除了元素本身之外,所有与元素关联的绑定事件和jQuery数据都将被删除。

如果您不保留其他指针(包括基于闭包的隐藏指针),那么您将是安全的。如果您不想保留隐藏的链接到删除的元素,请小心不要使用本机addEventListener

+0

ok,jquery删除* current *窗口中关联的所有绑定事件和数据,但iframe的contextWindow怎么样?我想这只是关闭浏览器的标签,但不知道每个iframe是否在单独的浏览器线程中打开。我是偏执狂吗? –

+0

很难找到关于浏览器实现这一点的参考资料,但是我的应用程序中没有任何问题,这些应用程序构建和移除数千个div并在几天内工作(工业过程监督)。 –

+0

如果两天内没有解决方案,我会接受您的回答,因为您让我考虑更换所有使用div的iframe。我读[内存框架导致内存泄漏与jquery版本1.5.2](http://forum.jquery.com/topic/adding-jquery-in-iframe-causes-memory-leak-when-that-iframe-is-重新加载)和像silverlight一样的插件,所以使用iframe可能是一个问题,无论有没有jQuery。 –