2009-11-05 70 views
1

我們有一個Web應用程序,我們使用「top.document」,因爲此應用程序使用iframe,有時我們必須到達頂部文檔。替代html內部iframe的top.document

這個問題現在開始了,因爲我們需要將這個應用程序集成到一個網站中,我們把它放在這個網站的iFrame中。由於應用程序使用「top.document」,它將到達該網站的「文檔」,而不是應用程序的「頂部」。

您有什麼想法來幫助我們解決問題嗎?

在此先感謝!

回答

1

確保你正在尋找正確的窗口的方法是知道你在哪裏鏡框的應用程序中。

例如,讓我們說「主框架」是網站的根。在主框架內,定義了額外的「iFrames」。在這些附加框架中加載的頁面需要知道它們在框架層次結構中的位置。

所以,您會發現,瞭解您在框架和彈出窗口層次結構中的位置將允許您正確回溯並定義對前一頁/框架中窗口中包含的函數和對象的引用。

添加一些JavaScript代碼來給你一個想法:

if (window.self){ 
    if (window.top == window) { 
     if (window.name == "main_frame"){ 
      MainFrameRef = window.top; 
      return MainFrameRef; 
     } else { 
      return false; 
     } 
    } 
} 
1

假設你的iframe是深一個層次:

parent.document 

,或者如果它是更深:

parent.parent.parent.parent.document 

但我真的希望它不是那麼深;-)

+0

好的,但我們有在iframe層次結構中的不同點處調用的javascript函數,因此解決方案必須更加靈活... – Rui 2009-11-05 17:21:24

+0

您將不得不遍歷「Inner」網站中的所有頁面,並修改頂部.document對parent.document等的引用取決於頁面的級別。 – 2009-11-05 21:52:29

0

如果你正在尋找死亡的簡單,尋找已知的ID,這就是你停止向上爬行的父母和頂部和文檔。

或者您可以讓每個框架在加載時在某個全局變量(當然是名稱空間)中註冊自己,這樣您就可以引用它們並且不需要遍歷DOM。