2011-05-17 45 views
7

說,一個HTML頁面(Page.htm)包含以下...搶全局變量從嵌入的iframe

<script type="text/javascript"> 
    var vara = 'varA'; 
</script> 

現在這個頁面加載到一個iframe從另一個頁面......

<iframe id="child_frame" src="http://mysite.com/Page.htm" /> 

從父頁面,我想從Page.htm中獲取全局'vara'的值。

無以下行工作的...

window.frames['child_frame'].window.vara; 

    window.frames['child_frame'].window['vara']; 

    window.frames['child_frame'].contentWindow['vara']; 
    // in fact contentWindow returns undefined!! 

任何幫助,將不勝感激!

UPDATE

這個問題看多,並試圖可用來解決這個問題的各種庫後,我頓悟了,因爲我有IIS在兩個主要和iframe嵌入網站的控制,我可以通過爲各個網站使用相同的基本URL在跨域腳本規則中工作。此外,解決問題的庫似乎需要不斷更新,因爲瀏覽器供應商通過持續更新來加強安全性。要避免瀏覽器試圖阻止你做什麼,必須始終更新解決方法確實是一件苦差事。

回答

4

你的第一個語法應該可以工作IF你在相同的doamin

如果IFRAME正在從另一個域加載一個頁面,那麼您將無法訪問它。

+1

啊,有道理。你能扭轉嗎?孩子iframe可以看到其父(不同域)的全局變量嗎? – 2011-05-17 18:59:17

+1

@John:會更糟,你不覺得嗎?無論如何,你可能對[this]感興趣(http://softwareas.com/cross-domain-communication-with-iframes) – neurino 2011-05-17 19:04:50

+1

@John你可以通過使用父母。例如,「parent.myGlobalVarInPageHtm.id」。 – 2012-06-06 21:48:50

2

此:

<iframe id="child_frame" src="http://" /> 

應該是:

<iframe name="child_frame" src="http://" /> 

iframe的屬性 「ID」 應改爲 「名」。