【问题标题】:Javascript window.parent variable is never nullJavascript window.parent 变量永远不会为空
【发布时间】:2015-09-09 10:36:38
【问题描述】:

众所周知,window.parent 可以帮助人们在使用多个 iframe 时获取当前窗口的父窗口。但是,我认为应该有一个 parent 为 null 的最外层窗口

我尝试了 parent.parent.parent.parent... 当我发现其中一个 parent 为 null 时,我想我可以获得根窗口。令人惊奇的是,无论我使用多少个父级,父级变量永远不会为空。

我的情况如下。

域名为:csm.mysite.com 的网站 1

域名为:csmnew.mysite.com 的网站 1-1

Website1-1 在 Website1 的 iframe 中(它们不在同一个域中)

同时,在Website1-1中,有很多iframe(它们在同一个域中)

我需要为 Website1-1 设置/获取一个全局变量,所以我使用了 top。这真的很有帮助。

但是,当 Website1-1 在 Website1 中时,总是会抛出错误,因为顶部变量(在 Website1-1 中)被引用到 Website1 并且对于跨域策略无效。但我真正想要的是设置/获取 Website1-1 的“顶部”变量。

然后我在想是否可以使用 parent.parent.parent.... 来获取 Website1-1 的最外层窗口,而不是使用 top 让我得到错误的窗口。

回到正题,为什么parent.parent.parent...总是null?

顺便问一下,有人知道如何获取“Website1-1”的最外层窗口吗?

非常感谢

【问题讨论】:

  • 没有。 如果窗口没有父级,则其父级属性是对自身的引用Source

标签: javascript html iframe cross-domain


【解决方案1】:

window.parent,如果窗口没有父窗口,则包含对自身的引用,这就是它永远不会为空的原因。

来源:https://msdn.microsoft.com/en-us/library/ms952669.aspx

要找到最外层的窗口,你可以使用window.frameElement。这与您期望 window.parent 的工作方式一样:

更多详情:https://developer.mozilla.org/en-US/docs/Web/API/Window/frameElement

【讨论】:

    猜你喜欢
    • 2017-10-03
    • 2021-09-09
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    相关资源
    最近更新 更多