何时使用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设置值