Javascript window.parent 变量永远不会为空

Javascript window.parent variable is never null

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

我试过 parent.parent.parent.parent... 我以为我可以得到根 window,但我发现其中一个 parent 为空。令人惊奇的是,无论我使用了多少 parent,parent 变量永远不会为空。

我的情况如下。

网站 1 的域:csm.mysite.com

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

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

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

我需要 set/get Website1-1 的全局变量,所以我使用了 top。这真的很有帮助。

但是,当 Website1-1 在 Website1 中时,总是会抛出错误,因为 top 变量(在 Website1-1 中)被引用到 Website1 而这对 cross-domain 策略无效。但我真正想要的是 set/get "top" Website1-1 的变量。

然后我在想是否可以使用 parent.parent.parent... 获取 Website1-1 的最外层 window,而不是使用让我弄错 window 的顶部。

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

顺便问一下,有没有人知道如何获得 "Website1-1" 的最外层 window?

非常感谢

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

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

要查找最外层的 window,您可以使用 window.frameElement。这按照您期望 window.parent 的方式工作:

此处有更多详细信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/frameElement