2010-05-20 91 views
2

我們在web應用程序中使用了太多的iframe。在這些iframe中,我們加載可能還包含iframe等等的頁面,直到N級別。獲取iframe對象的最佳方法

現在我正在使用遞歸函數來找出JavaScript中所需的iframe對象。它工作正常,問題是當我們創建大型動態頁面時可能包含多達1000個iframe。在這種情況下,我的遞歸函數花費太多時間來查找所需的iframe對象。

我怎樣才能克服這個問題,或者這些是JavaScript的遞歸的任何替代方案。

由於

+0

我不知道什麼應用程序正在做1000個iframes .... – Sarfraz 2010-05-20 07:37:40

+0

基本上它的一個結果頁面反對一些搜索。在結果列表中,我們有一個圖標來顯示與每條記錄相關的數據。因此,我們從服務器端對每個記錄繪製一個ifram,最大頁面大小爲1000. 是的,我們也可以顯示div和ON/OFF其可見性,但是使用它的時候有一些限制,所以我們去iframe。 – MUS 2010-05-20 07:44:53

+0

這幾乎是XHR變得有用的地方 - iframe往往會消耗大量內存,因爲每個內容都包含DOM的單獨副本,腳本環境等。 – 2010-05-20 13:09:38

回答

1

嘗試註冊所有不同iframe到一個數組立即的onload之前(在用戶仍然在等待)。這樣你就不必組裝所有的iframe,然後通過它們。 在你的頁面的底部...

< /html> 
< script>iframes=document.getElementsByTagName("iframe")< /script> 

還是真的不知道你是如何識別每個iframe中 - 如果你正在尋找一個特定的ID或SRC - 嘗試這是一個設置陣列

< /html> 
< script> 
iframes=document.getElementsByTagName("iframe") 
var iframe_stuff=[] 
var i=0 
while(iframes[i]) 
{ 
iframe_stuff[i]=[] 
iframe_stuff[i]["id"]=iframes[i].id 
iframe_stuff[i]["src"]=iframes[i].src 
i++ 
}< /script> 

所以,當你需要通過你的iframe列表數組已準備就緒。還記得在找到你想要的iframe後使用'break'。如果你發現iframe是在第4號,休息會停止搜索那裏,而不是檢查其餘的...