【问题标题】:Manage multiple Popups管理多个弹出窗口
【发布时间】:2018-04-04 12:02:48
【问题描述】:

我需要帮助来管理通过 window.open() 创建的多个命名弹出窗口。有多个弹出窗口都有一个唯一的 ID,我的应用程序需要在父窗口中的 ajax 成功后重新加载一些弹出窗口。

var myWindow = window.open("_url", uniqueId, "other params...")

如果我创建一个弹出窗口,它可以通过调用myWindow.location.reload() 重新加载。但是,我不确定如何做到这一点,因为每次打开新的弹出窗口时,myWindow 对象中对当前弹出窗口的引用都会更新。

我正在考虑创建一个包含window.open 引用的全局javascript 映射。 类似:

var myWindowArray = [];
myWindowArray[uniqueId] = window.open("_url", uniqueId, "other params...");

然后通过调用 myWindowArray[uniqueId].location.reload() 重新加载此弹出窗口。

我不确定这是否可行,或者是否有更好的方法来管理这种情况。

提前致谢

【问题讨论】:

  • 带有“uinque id”的意思是每个弹出窗口都有一个与其他所有不同的 id?
  • 是的!每个弹出窗口总是有一个唯一的 ID

标签: javascript jquery


【解决方案1】:

以下是您要查找的内容

var dict = {};
dict["MY_FIRST_WINDOW"] = window.open("_url", "MY_FIRST_WINDOW", "other params...");
dict["MY_FIRST_WINDOW"].location.reload();

但你说I am not sure if this will work,这是个问题。在询问之前,您应该始终先自己尝试。

【讨论】:

  • 实际上,我不确定这种设计的可扩展性,更不知道可行性。一次可能会打开 20-30 个弹出窗口,并且当前的 DOM 已经相当沉重。我想我应该解释得更好一点
  • 对象字面量与 dom 无关,当你在做 dict['UUID'] = window.open() 时,你并没有存储窗口的 DOM 或将其内容复制到 dict 而是存储对它,根据这个stackoverflow.com/a/32538987/614277是8个字节
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 2023-04-09
相关资源
最近更新 更多