Javascript window.parent变量永远不为空

时间:2015-06-23 14:44:19

标签: javascript html iframe cross-domain

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

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

我的条件如下。

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

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

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

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

我需要设置/获取Website1-1的全局变量,所以我使用的是top。这确实有帮助。

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

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

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

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

非常感谢

1 个答案:

答案 0 :(得分:3)

window.parent,如果窗口没有父窗口,则包含对self的引用,这就是为什么它永远不会为null。

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

要查找,最外面的窗口可以使用window.frameElement。这可以按照预期的window.parent工作方式工作:

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