在JavaScript中,什么时候使用window.opener / window.parent / window.top?
发布于 2012-07-03 22:34:06
window.opener指的是为打开窗口而调用window.open( ... )的窗口,它的calledwindow.parent指的是<frame>中窗口的父窗口,<iframe>window.top指的是嵌套在一个或多个<iframe>子窗口层中的窗口的最上面的窗口当它们与引用窗口的情况无关时,它们将是null (或者可能是undefined)。(“引用窗口”是指运行JavaScript代码的上下文窗口。)
发布于 2012-07-03 22:35:50
我认为你需要在你的问题中添加一些上下文。但是,可以在以下位置找到有关这些内容的基本信息:
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
在处理需要与包含它们的窗口对象进行通信的IFrames时,我主要使用它。
window.top https://developer.mozilla.org/en-US/docs/Web/API/Window.top
这对于确保您与顶级浏览器窗口进行交互非常有用。你可以用它来防止其他网站对你的网站进行iframing攻击,等等。
如果你在你的问题中添加更多细节,我可以提供其他更相关的例子。
更新:有几种方法可以处理你的情况。
您具有以下结构:
对话框1打开的
当对话框1运行代码以打开对话框2时,在创建对话框2之后,让对话框1在对话框2上设置引用Dialog1打开程序的属性。
因此,如果“子窗口”是对话框2窗口对象的变量,而“窗口”是对话框1窗口对象的变量。在打开对话框2之后,但在关闭对话框1之前,进行类似如下的分配:
childwindow.appMainWindow = window.opener完成上面的赋值后,关闭对话框1。然后,从dialog2内部运行的代码中,您应该能够使用window.appMainWindow来引用主窗口,窗口对象。
希望这能有所帮助。
发布于 2012-07-03 22:39:04
top、parent、opener (以及window、self和iframe)都是窗口对象。
window.opener window.window.top返回打开或启动当前弹出窗口的窗口self.window.parent ->返回最上面的窗口,如果使用框架,这是框架集窗口,如果不使用框架,这与窗口相同,或者self.window.parent ->返回当前框架或iframe的父框架。父框架可以是框架集窗口,如果有嵌套框架,也可以是另一个框架。如果不使用框架,则父窗口与当前窗口或self相同
https://stackoverflow.com/questions/11313045
复制相似问题