在JavaScript时使用window.opener
/ window.parent
/ window.top
?
Answers:
window.opener
指被调用window.open( ... )
以打开被调用窗口的窗口window.parent
指代<frame>
或中的窗口的父级<iframe>
window.top
指嵌套在一层或多层<iframe>
子窗口中的窗口中最顶层的窗口当它们与引用窗口的情况不相关时,它们将是null
(或可能是undefined
)。(“引用窗口”是指在其上下文中运行JavaScript代码的窗口。)
window.open()
提交页面时打开一个孩子。现在,该子窗口打开另一个具有相同window.open()
关闭自身的子窗口。现在,当我提交第二个孩子(第一个孩子不复存在)时,我想访问主页的页面元素。当第一个孩子不再存在时,第二个孩子有可能吗?
window.opener.opener
在中间页消失之前抓取。
我认为您需要在问题中添加一些上下文。但是,可以在以下位置找到有关这些内容的基本信息:
window.opener
https://developer.mozilla.org/zh-CN/docs/Web/API/Window.opener
在打开一个新窗口作为对话框时,我主要使用window.opener,该对话框需要用户输入,并且需要将信息传递回主窗口。但是,这受原始策略的限制,因此您需要确保对话框和打开器窗口中的内容均从同一原始源加载。
window.parent
https://developer.mozilla.org/zh-CN/docs/Web/API/Window.parent
在处理需要与包含它们的窗口对象进行通信的IFrame时,我主要使用了此方法。
window.top
https://developer.mozilla.org/zh-CN/docs/Web/API/Window.top
这对于确保与顶级浏览器窗口进行交互很有用。您可以使用它来防止其他站点对您的网站进行格式化。
如果您在问题中添加更多细节,我可以提供其他更相关的示例。
更新:
有几种方法可以处理您的情况。
您具有以下结构:
当对话框1运行代码以打开对话框2后,在创建对话框2之后,让对话框1在对话框2上设置一个引用Dialog1打开器的属性。
因此,如果“ childwindow”是对话框2窗口对象的变量,而“ window”是对话框1窗口对象的变量。在打开对话框2之后,但在关闭对话框1之前,进行如下分配:
childwindow.appMainWindow = window.opener
完成上面的分配后,关闭对话框1。然后,从dialog2内部运行的代码中,您应该可以使用
window.appMainWindow
来引用主窗口,窗口对象。
希望这可以帮助。
window.open()
页面提交方式打开一个孩子。现在,该子窗口打开另一个具有相同window.open()
关闭自身的子窗口。现在,当我提交第二个孩子(第一个孩子不复存在)时,我想访问主页的页面元素。当第一个孩子不再存在时,第二个孩子有可能吗?