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

标签 javascript window.open

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

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

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

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

最佳答案

找到了修复方法。我需要将函数调用跟踪到实际的 window.open 并添加一些逻辑来检测我是否在 child 中,如果是,则调用 window.opener.open() 。不确定为什么它无法在调用堆栈中更早地更改上下文,但它可以工作:)

关于javascript - 在 JavaScript 中维护特定的窗口层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5392314/

相关文章:

android - launchExternal 不适用于 Android 上的 XDK 应用程序

javascript - setTimeout 到 window.open 和 close,在同一个窗口上?

javascript - 在现代浏览器中隐藏地址栏是不可能的吗?

javascript - 为什么 window.showModalDialog 被弃用?用什么代替?

javascript - 创建具有 toString 函数的 javascript 对象数组

javascript - 将 Express 应用程序迁移到 NestJS

javascript - 如何在 Linnworks 嵌入式应用程序中获取刷新的 token ?

javascript - 可以从父窗口访问响应代码吗?

javascript - D3js 图表响应

javascript - 合并两个对象及其内部的数组