何时使用window.opener / window.parent / window.top

时间:2012-07-03 14:25:50

标签: javascript window

在JavaScript中何时使用window.opener / window.parent / window.top

4 个答案:

答案 0 :(得分:140)

  • window.opener指的是调用window.open( ... )来打开窗口的窗口
  • window.parent是指<frame><iframe>
  • 中窗口的父级
  • window.top指的是嵌套在<iframe>个子窗口的一个或多个层中的窗口中的最顶层窗口

当它们与引用窗口的情况无关时,它们将是null(或者undefined)。 (“引用窗口”表示运行JavaScript代码的上下文窗口。)

答案 1 :(得分:21)

我认为您需要在问题中添加一些上下文。但是,有关这些事情的基本信息可以在这里找到:

window.opener https://developer.mozilla.org/en-US/docs/Web/API/Window.opener

我主要在打开一个新窗口时使用window.opener,该窗口充当需要用户输入的对话框,并且需要将信息传递回主窗口。但是这受到原始策略的限制,因此您需要确保对话框和开启窗口中的内容都是从同一来源加载的。

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

这对确保您与顶级浏览器窗口进行交互非常有用。除其他外,您可以使用它来阻止其他网站对您的网站进行设置。

如果您在问题中添加更多细节,我可以提供其他更相关的示例。

<强>更新 您可以采用几种方法来处理您的情况 您有以下结构:

  • 主窗口
    • 对话1
      • 对话框2由对话框1打开

当Dialog 1运行代码打开Dialog 2时,在创建Dialog 2后,让对话框1在Dialog 2上设置一个引用Dialog1开启器的属性。

因此,如果“childwindow”是对话框2窗口对象的变量,“window”是Dialog 1窗口对象的变量。打开对话框2后,但在关闭对话框1之前,进行类似于此的赋值:

childwindow.appMainWindow = window.opener

完成上述作业后,关闭对话框1。 然后从在dialog2中运行的代码,你应该可以使用 window.appMainWindow引用主窗口,窗口对象。

希望这有帮助。

答案 2 :(得分:5)

top,parent,opener(以及window,self和iframe)都是窗口对象。

  1. window.opener - &gt;返回打开的窗口或启动当前弹出窗口。
  2. window.top - &gt;返回最顶层的窗口,如果您正在使用框架,这是框架集窗口,如果不使用框架,则与窗口或自身相同。
  3. window.parent - &gt;返回当前帧或iframe的父帧。如果您有嵌套帧,则父框架可以是框架集窗口或另一个框架。如果不使用框架,则父项与当前窗口或自我
  4. 相同

答案 3 :(得分:1)

当你处理弹出窗口时.opener扮演一个重要角色,因为我们必须处理父页面和子页面的字段,当我们必须在父页面上使用值时我们可以使用window.opener或者我们在加载时想要子窗口或弹出窗口中的一些数据然后我们可以使用window.opener设置值