2011-10-04 36 views
33

我有一個場景,其中有一個頁面,其中包含<script>標記和一些全局JavaScript變量。我也有該頁面內的iframe,我想要在iframe中訪問頁面的全局JavaScript變量。在頁面中共享具有iframe的頁面的全局JavaScript變量

是否有可能?如果是的話,我該怎麼做?

+0

提供清晰的概念一些示例代碼.. –

回答

52

通過在iframe的腳本中調用parent.your_var_name很容易。

一個條件:兩個頁面(主和iframe)必須在同一個域上。

主頁:

<script> 
var my_var = 'hello world!'; 
</script> 

IFRAME

<script> 
    function some_fn(){ 
    alert(parent.my_var); //helo world! 
    } 
</script> 
+6

謝謝,剛剛意識到我的javascript有多糟糕:p – Ankit

33

不可能的,如果 iframe和主文檔不在同一個域(由於交叉域安全策略)。

要繞過此限制,您可以使用跨域消息。

可能if iframe主文檔位於同一個域中,則可以訪問其全局變量。有屬於iframe的窗口對象或主頁面的對象。

這裏是從主文件(或一個iframe)訪問在同一域中的IFRAME可變MYVAR的代碼:

document.getElementById('iframeid').contentWindow['myvar']; 
+2

感謝您的時間!順便說一下,我想訪問iframe上的頁面變量,你告訴我相反。 – Ankit

+5

看到相反的情況也非常有用。 – johnbakers

+0

您能否在這方面澄清「跨域消息傳遞」? –