2011-11-04 203 views
1

我有一個URL數組,我想爲每個URL創建一個iframe。 但我想要的只是創建和加載下一個iframe只有當前完全加載。如何在已加載的另一個iframe之後加載iframe

這是函數創建的iframe:

function loadSubsequencePages(links){ 
var id = document.getElementsByTagName("iframe").length; 

    for(var i=0; i<links.length;i++){ 
     var frame = document.createElement("iframe"); 
     frame.setAttribute("id","frame"+id); 
     frame.setAttribute("src","about:blank"); 
     document.getElementById('frames').appendChild(frame); 
     changeLoc(document.getElementById("frame"+id),links[i].href); 
    } 

} 

我想移動到下一個我加載我創建實際的iframe只有當。

這是改變URL的功能:

function changeLoc(frm,loc) { 
     frm.webNavigation.loadURI(loc, 
           frm.webNavigation.LOAD_FLAGS_NONE, 
           null, null, null 
          ); 
    } 

我怎麼能這樣做?

+0

對不起,*這樣做 – Noelia

+0

習慣上選擇接受的答案...;) – Alex

回答

1

這取決於。

  1. 您是否可以控制IFRAME中顯示的頁面?
  2. 它們是 與主機頁面在同一個域上嗎?

有四種情況:

  • 如果他們是在同一個域,則可以通過 JavaScript的訪問內容。

  • 如果他們是在同一域,您可以修改加載的頁面 ,你可以告訴父框架時,從該頁面onload事件 火災的IFRAME加載。

  • 如果他們不在同一個域,您可以修改加載 頁面,安全限制會阻止直接溝通。但是你 可以加載頁面ping服務器上的中央存儲庫時 的onload事件觸發

  • 如果他們不在同一個域,你不能修改的 加載網頁...那麼你有麻煩了... :)你將無法 檢查何時頁面完成加載....嗯..你可以創造一些醜陋的 定時器加載頁面在設定的時間間隔......但不要告訴任何人我 告訴你這麼...;)

1

如果iframe指向的網址爲另一個域,您只需在iframe上放置一個onload事件 - 它會告訴您iframe何時開始加載,但您永遠無法通過「相同來源策略」告訴何時加載完成。在這種情況下,頁面內部與託管頁面隔離。

如果I幀指向相同域,可以插入某種的document.ready代碼放到頁面,然後可以調用父頁面的JavaScript函數宣佈,它已經完成加載。