javascript - 跨框架共享全局 javascript 对象

标签 javascript html iframe

这听起来很可笑,但在某些情况下,我们需要在 iframe 之间共享 JavaScript 对象

当我们尝试使用 localStorage 来达到目的时,人们说某些浏览器可能不支持它。即使他们支持 localStorage,用户也可能会减少存储容量等等。 .
所以我的问题是,我们是否有解决方案/替代方案来跨 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 对象

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

是否有任何解决方案/解决方法?

最佳答案

正如@Pointy 建议的那样,LocalStoage 跨框架共享数据的最佳替代方法是使用 window.top Property/Member/Object

但是,该属性仍然是 ReadOnly,如 mozilla 开发文档中所述,但我仍然想知道它是否无论如何都不会在将来严格强制不要将新成员/字段添加到 window。顶部

引用:Mozilla Dev Docs

关于javascript - 跨框架共享全局 javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12915360/

相关文章:

javascript - 如何在javascript中对两个对象的属性求和

javascript - 在复选框勾选上隐藏表行内容

jquery - 删除 jquery 元素 slider 上的细灰色边框

javascript - 如何解决 parent.document 中的问题 "Blocked a frame with origin from accessing a frame with origin"

javascript - 在 JavaScript 中通过 innerHTML 从列表中删除项目

javascript - 对象上的 $.each() 函数 jQuery

javascript - 交叉抓取和同构抓取有什么区别?

javascript - 获取对象中的重复项并合并值

隐式声明的 JavaScript 变量

javascript - 在第二次加载时更改 iframe 样式,在 Internet Explorer 9 中不起作用