2011-05-28 22 views
11

好的,我在頁面上使用iframe。 iframe中的內容我無法控制,並正在與Adobe Flash程序一起使用。需要在iframe提交內容後跳出iframe

但是,一旦表單在iframe中被再次獲取(我再也無法控制),它會加載一個PAGE,我有控制權,但在IFRAME中有該頁面而不是iframe在該頁面上。我如何在該頁面上跳出iframe?

我假設一些JavaScript是需要的,但是這個代碼是沒有好:

if (top.location != self.location) { 
top.location = self.location; 
} 

使用此代碼加載了主索引頁的網站。我需要它在表單提交之後加載頁面並將其分開。同樣,我可以訪問在iframe中提交表單後在iframe中加載的頁面。

請幫幫我。

也許是一個棘手的方式來做到這一點?例如,當頁面正在加載?或者以某種方式檢查iframe是否已提交?我控制了我網站上的兩個頁面(最初包含iframe的頁面和iframe提交到的頁面),而不是iframes內容。

謝謝:)

+0

你把代碼外頁面或iframe的頁面?另外,您是否會遇到由具有不同域的外部和內部頁面引起的安全問題? – ErikE 2011-05-28 01:38:05

回答

11

我相信你想這個

if(this != top){ 
    top.location.href = this.location.href; 
} 

爲了打破

它可能需要文檔引用太...我不是在電腦前進行檢查。

if(this != top){ 
    top.document.location.href = this.document.location.href; 
} 
+0

我在哪裏可以放置該代碼?在頭上?它如何知道這是什麼?或者什麼'頂部'是在Javascript內?它會自動地知道它,還是它必須被定義? – SoLoGHoST 2011-05-28 00:44:26

+0

這不起作用,它仍然帶我去的網站索引,而不是iframe的URL。 – SoLoGHoST 2011-05-28 00:53:41

+0

頁面的URL是什麼?只有一個框架?我問,因爲我使用了這個代碼幾十次,我知道它的工作原理。是的,你可以把它放在頭部或身體中... top是對最頂層窗口的全局引用,並且它會自動引用「this」窗口。 PS我可能會有點瘋狂,它可能需要全名中的「文檔」。 – scunliffe 2011-05-28 01:32:35

1

什麼工作對我來說是:

(function() { 
    'use strict'; 
    console.log('window.top.location', window.top.location); 
    console.log('window.location', window.location); 

    if (window.location !== window.top.location) { 
     window.top.location = window.location; 
    } 
})(); 

靈感來自https://css-tricks.com/snippets/javascript/break-out-of-iframe/