跨帧共享全局javascript对象

时间:2012-10-16 13:04:20

标签: javascript html iframe

这可能听起来很荒谬,但在某些情况下我们需要在JavaScript Objects之间共享iframe

当我们尝试使用localStorage来实现此目的时,人们会说某些浏览器可能不支持它。即使它们支持localStorage,用户可能会减少存储容量等等...... /> 所以我的问题是,我们是否有一个解决方案/替代方案来跨JavaScript分享iframe个对象 下面的示例可能会让我们在同一页上

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

由于浏览器/ UserAgent为页面中使用的每个额外Window Object创建单独的iframe,如果我们将Public JavaScript Object附加/扩展到Window Object/Document Object,我们就无法访问{{1}} 1}},它的最后希望似乎消失了!

有解决方案/解决方法吗?

2 个答案:

答案 0 :(得分:2)

作为@Pointy建议,LocalStoage跨框架共享数据的最佳替代方法是使用window.top属性/成员/对象

但是,如mozilla dev docs所述,该属性仍然是 ReadOnly ,但我仍然想知道它是否在未来强制要求不将新的成员/字段添加到window.top

参考:Mozilla Dev Docs

答案 1 :(得分:1)

可以通过postMessage

在多个域中共享多个iframe的数据