【问题标题】:Maintaining a specific window hierarchy in javascript在 javascript 中维护特定的窗口层次结构
【发布时间】:2011-03-22 13:50:28
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你的方法有什么问题?有什么错误吗?
  • 我不完全确定会发生什么 - 当我将调试器放在这些行上方并进入其中时,我在第二行按 F11(进入函数调用),但没有任何反应。它完全跳过函数调用,并且没有打开任何窗口。

标签: javascript window.open


【解决方案1】:

找到了解决办法。我需要跟踪函数调用到实际的 window.open 并添加一些逻辑来检测我是否在一个孩子中,如果我是,则调用 window.opener.open() 代替。不知道为什么它不能在调用堆栈中更早地更改上下文,但它可以工作:)

【讨论】:

    猜你喜欢
    • 2012-01-23
    • 2014-11-17
    • 2018-11-14
    • 1970-01-01
    • 2015-05-29
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多