何时使用window.opener / window.parent / window.top
在JavaScript中何时使用window.opener / window.parent / window.top ? 
-   window.opener引用调用window.open( ... )的窗口来打开调用它的窗口
-   window.parent指向<frame>或<iframe>窗口的父级
-   window.top指的是嵌套在一层或多层<iframe>子窗口中的窗口的最顶层窗口
 当它们与引用窗口的情况无关时,它们将是null (或者可能是undefined )。  (“引用窗口”是指在其上下文中运行JavaScript代码的窗口。) 
我想你需要给你的问题添加一些上下文。 但是,关于这些东西的基本信息可以在这里find:
  window.opener https://developer.mozilla.org/en-US/docs/Web/API/Window.opener 
我主要使用window.opener打开一个新的窗口,作为一个需要用户input的对话框,需要将信息传递回主窗口。 但是,这受到源策略的限制,所以您需要确保来自对话框的内容和开启器窗口从相同的来源加载。
  window.parent https://developer.mozilla.org/en-US/docs/Web/API/Window.parent 
我主要在处理需要与包含它们的窗口对象通信的IFrame时使用它。
  window.top https://developer.mozilla.org/en-US/docs/Web/API/Window.top 
这对确保您正在与顶级浏览器窗口进行交互非常有用。 您可以使用它来防止其他网站iframing您的网站,等等。
如果你为你的问题添加更多的细节,我可以提供其他更相关的例子。
  更新:有几种方法可以处理你的情况。 
 你有以下结构: 
-  主窗口
-  对话1
- Dialog 2 Opened By Dialog 1
 
 
-  对话1
当对话框1运行代码打开对话框2时,在创build对话框2之后,让对话框1在对话框2上设置一个引用对话框1开启器的属性。
因此,如果“子窗口”是对话框2窗口对象的variables,“窗口”是对话框1窗口对象的variables。 打开对话框2之后,但在closures对话框1之前,请进行类似如下的分配:
 childwindow.appMainWindow = window.opener 
 在完成上面的任务之后,closures对话框1.然后,从dialog2中运行的代码,您应该可以使用window.appMainWindow引用主窗口,窗口对象。 
希望这可以帮助。
顶部,父母,开瓶器(以及窗口,自我和iframe)都是窗口对象。
-   window.opener– >返回打开或启动当前popup窗口的窗口。
-   window.top– >返回最上面的窗口,如果你使用框架,这是框架集窗口,如果不使用框架,这是相同的窗口或自我。
-   window.parent– >返回当前帧或iframe的父帧。 父框架可能是框架集窗口或另一个框架,如果您有嵌套的框架。 如果不使用框架,则父窗口与当前窗口或自己相同
当你处理popup窗口时,window.opener起着重要的作用,因为我们必须处理父页面的字段以及子页面,当我们必须在父页面上使用值时,我们可以使用window.opener或者我们想要一些数据在加载的时候在子窗口或popup窗口上,然后我们可以使用window.opener设置值