在javascript中维护特定的窗口层次结构

时间:2011-03-22 13:50:28

标签: javascript window.open

所以我正在编写一些javascript来处理多个窗口,我需要一种方法来强制执行以下层次结构:主窗口应该是打开的所有其他窗口的父窗口,无论从哪里打开其他窗口。即。如果主窗口使用window.open()打开一个子窗口,并且子窗口使用window.open()打开一个窗口,则这两个子窗口需要是主窗口的兄弟和子节点,当前一个子节点是另一个子节点的父节点这引起了问题。有没有办法在调用window.open()之前引用父窗口,所以将父窗口设置为新窗口的父窗口,而不是调用javascript函数的窗口?

我尝试了这个没有成功,但它可能很接近:

if (window.opener && !window.opener.closed) {
  window.opener.functionThatEventuallyOpensAWindow();
} else {
  functionThatEventuallyOpensAWindow();
}

如果有人有任何想法,将不胜感激。请注意,此代码段不能直接使用window.open(),但必须调用最终以window.open()结尾的其他函数。

1 个答案:

答案 0 :(得分:0)

找到修复程序。我需要按照函数调用到实际的window.open并添加一些逻辑来检测我是否在一个孩子,如果是的话,请调用window.opener.open()。不知道为什么它无法在调用堆栈中更早地更改上下文,但它可以工作:)