2012-10-16 217 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。 –