众所周知,当使用多个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”的最外层窗口?
非常感谢
答案 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