Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时使用window.opener/window.parent/window.top_Javascript_Window - Fatal编程技术网

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

Javascript 何时使用window.opener/window.parent/window.top,javascript,window,Javascript,Window,在JavaScript中何时使用window.opener/window.parent/window.top? window.opener是指调用window.open(…)的窗口,用于打开调用它的窗口 window.parent指的是或 窗口。top是指嵌套在一层或多层子窗口中的窗口的最顶层 当它们与引用窗口的情况无关时,它们将是null(或者可能是未定义的)。(“引用窗口”是指JavaScript代码在其上下文中运行的窗口。)我认为您需要为您的问题添加一些上下文。但是,有关这些方面的基本信

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

  • window.opener
    是指调用
    window.open(…)
    的窗口,用于打开调用它的窗口
  • window.parent
    指的是
  • 窗口。top
    是指嵌套在一层或多层
    子窗口中的窗口的最顶层

当它们与引用窗口的情况无关时,它们将是
null
(或者可能是
未定义的
)。(“引用窗口”是指JavaScript代码在其上下文中运行的窗口。)

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

window.opener

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

window.parent

我主要在处理需要与包含它们的窗口对象通信的iFrame时使用过它

window.top

这有助于确保您与顶级浏览器窗口进行交互。你可以用它来防止其他网站干扰你的网站,等等

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

更新: 有几种方法可以处理您的情况。
您具有以下结构:

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

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

childwindow.appMainWindow = window.opener
完成上述分配后,关闭对话框1。 然后从dialog2内部运行的代码中,您应该能够使用
window.appMainWindow
引用主窗口、窗口对象

希望这对您有所帮助。

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

  • window.opener
    ->返回打开或启动当前弹出窗口的窗口
  • window.top
    ->返回最顶端的窗口,如果使用框架,这是框架集窗口,如果不使用框架,这与window或self相同
  • window.parent
    ->返回当前帧或iframe的父帧。父帧可以是帧集窗口,也可以是其他帧(如果有嵌套帧)。如果不使用框架,则父窗口与当前窗口或自身窗口相同

  • 在处理弹出窗口时,window.opener起着重要的作用,因为我们需要处理父页面和子页面的字段,当我们必须在父页面上使用值时,我们可以使用window.opener,或者我们希望在加载时在子窗口或弹出窗口上获得一些数据,然后我们可以再次使用window.opener设置值。谢谢@pointy的响应。我有一个主页,在页面提交时使用
    window.open()
    打开一个子页面。现在,此子窗口使用相同的
    window.open()
    closing self打开另一个子窗口。现在,当我提交第二个孩子(第一个孩子不再存在)时,我想访问主页的页面元素。当第一个孩子不在的时候,第二个孩子可能会出现这种情况吗?@Sriram:这就是你需要在问题中提供的信息,这样人们才知道你真正想解决的问题。@Sriram在中间页面消失之前,你必须抓住
    window.opener.opener
    。谢谢@Mark的回复。我有一个主页,在页面提交时使用
    window.open()
    打开一个子页面。现在,此子窗口使用相同的
    window.open()
    closing self打开另一个子窗口。现在,当我提交第二个孩子(第一个孩子不再存在)时,我想访问主页的页面元素。当第一个孩子不再出现时,第二个孩子是否可能出现这种情况?更新答案@josh3736-我看不出这个评论有什么帮助。我不是建议任何人获得w3schools认证。这里的每个人都知道如何使用谷歌搜索并获得window.opener、window.top和window.parent的基本定义。使用上面的链接或查找新的引用,但复制此处仅定义这些属性的信息几乎没有任何意义。解释非常有用@MarkAtRamp51谢谢!这个链接非常详细地解释了W3学校的问题。这一点是为了避免将w3schools作为权威信息来源推广或链接到w3schools(从而增加Google的PageRank)。W3S传播坏信息,部分问题是太多人链接到坏信息。最好是链接到更可靠的信息源,例如。还有一个window.self,它指向同一个窗口:)