2012-10-16 62 views
3

這聽起來很荒謬,但在某些情況下,我們需要在iframe之間分享JavaScript Objects跨幀共享全局javascript對象

當我們試圖用localStorage爲服務宗旨,有人說,某些瀏覽器可能不支持it.Even是否支持本地存儲,用戶可能已經減少存儲容量等等...
所以我的問題是,我們是否有跨iframe 下面的例子一個解決方案/產品分享JavaScript對象可能讓我們在同一頁

parentpage.html

<html> 
... 
<head><script src="script1.js" type="text/Javascript"></script></head> 
<body> 
... 
<iframe src="childpage.html"></iframe> 
</body> 
</html> 

childpage.html

<html> 
... 
<head><script src="script2.js" type="text/Javascript"></script></head> 
... 
</html> 


parentpage.html,childpage.html,script1.js,script2.js駐留在同一個域中,並在同一位置

假設script1.js使用需要公開可用的JavaScript Object

由於瀏覽器/用戶代理創建頁面中使用的每個附加iframe單獨Window Object,我們不能訪問Public JavaScript Object如果我們連接/它延伸到Window Object/Document Object,它最後的希望似乎消失了!

有沒有解決方案/解決方法?跨越屬於多個域的多個iframe

+6

將對象放在最上面的頁面上。然後,子框架可以引用'top.globalObject'來訪問它。 – Pointy

+0

謝謝你!這可能工作。由於子頁面「iframe」在主頁面內,因此使用「top」作爲我們的通信接口聽起來是合理的。但我還沒有嘗試過呢!我會盡力確保它可以正常工作 – Nokia808Freak

+2

只要所有頁面都來自同一個域,它應該可以正常工作。我曾參與一個廣泛使用這個框架進行協調的大型項目;在約會方式的瀏覽器中工作良好。 – Pointy

回答

2

跨框架來完成作爲@Pointy建議,最好的替代LocalStoage共享數據是使用window.top房產/會員/對象

但儘管如此,該物業是只讀和Mozilla開發文檔中提到,但我仍然不知道,如果是無論如何也不能嚴格被迫在未來不增加新成員/場到window.top

參考:Mozilla Dev Docs

1

共享數據可以通過postMessage的

+0

從標記和註釋中可以看到,它們都在同一個域中,所以不需要這個。 – Christoph