从iFrame/Window中访问JavaScript的父对象

6

如何在子窗口中访问在父窗口中定义的全局对象或数组。

<script>
    var events_data;
    function function_to_fill_events_data () {
      .
      .
      .
    }
</script>

<div>
    <div><iframe src="mini.php" width:100%; height: 100%;" scrolling="no"></iframe> </div>
</div>

当我在小型文档中时,我希望能够在JavaScript函数中访问events_data变量。

1个回答

11

选项1

你的标题提到了一个子窗口。如果你有一个子窗口而不是一个iframe,请使用以下方法:

window.opener.events_data

请查看来自MDN的window.opener

选项2

你的代码表明你正在使用一个iframe。从iframe中,只需使用parent

parent.events_data;

查看window.parent MDN文档


window.opener - 返回打开当前窗口的窗口的引用。

window.parent - 当在<iframe><object><embed>中加载一个窗口时,该窗口的父窗口是嵌入该窗口的元素所在的窗口。


那么权限拒绝怎么办?如果浏览器不允许从 iframe 访问父级属性呢? - Vitaliy Lebedev
如果我没记错的话,这种情况发生在 iframe 的内容是从另一个域加载时。 - Vitaliy Lebedev
1
@Malgin,你说得对。跨域脚本是一个巨大的安全风险,因此不被允许。你可以看出OP并没有尝试这样做,因为他的iframe的src属性使用的是相对路径。 - James Hill
@JamesHill 这些都是正确的,但如果需要这个怎么办?这是我的问题,以及我将在我的应用程序中执行的方式(点击)。 - Vitaliy Lebedev
@Malgin,在你的帖子中提出这些问题,而不是在这个问题的评论中。 - James Hill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接