繁体   English   中英

从Javascript关闭子窗口

[英]Closing children windows from Javascript

我一直在寻找解决问题的方法,只能找到一些难题,而无法将它们联系起来。 我有一个可以打开其他多个窗口的窗口(它本身是主窗口的子窗口)。 我希望在关闭父级时关闭子级窗口,听起来很简单吧?

这是一个难题,我的父窗口在打开子窗口时会进行回发,因此我保留的任何句柄数组(也是对象)都不会持久。 我已经研究了对该数组进行序列化和反序列化并将其存储在隐藏字段中,但这似乎不是最佳解决方案。 我也无法访问打开窗口的父窗口。

除了Javascript,服务器端代码还用C#编写,我使用的是asp.net。 有什么合理的解决方案吗? 我还应该提到,我正在使用的代码是在很久以前由多个不同的人编写的,因此我想对其进行添加,而不是更改大多数代码的工作方式。

最后,我知道在这里发布代码通常是一个好主意,但是我只是使用var win = window.open来执行窗口打开任务。

谢谢。

关于什么

var wins = [];
function newChildWindow(...) {
    wins.push(window.open(...));
}
window.onuload = function() {
    for (var i=0; i<wins.length; i++)
        if (!wins[i].closed)
            wins[i].close();
};

好的,然后我看到解决该问题的3种方法:

  • 不要使用多个浏览器窗口,而是设置页面样式以显示所有对话框; 正如@Gats建议的那样。 好的,如果您希望在子窗口中导航时持久输入父“ windows”,这会在某种程度上限制您。
  • 不要执行刷新回发以卸载父级。 改用Ajax将数据发送到应用程序服务器
  • 您不能存储(窗口)对象,只能存储字符串。 当打开一个窗口时,可以给它一个“目标”名称,任何其他具有相同目标(名称)的window.open都将使用已经打开的窗口。 这样一来,您就可以引用没有打开自己的窗口,然后关闭它们。 参见https://stackoverflow.com/a/563478/1048572

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM