window.open 打开子窗体,关闭全部的子窗体

Posted clnchanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了window.open 打开子窗体,关闭全部的子窗体相关的知识,希望对你有一定的参考价值。

需求:通过window.open方法打开了子窗体,当关闭主窗体时。子窗体应当也关闭。
实现思路:
1.打开子窗体函数window.open(url,winName)的第二个參数winName能够唯一标识打开的窗体。因此关闭子窗体仅仅须要使用winName.close()函数就可以。
2.一个页面可能有多个子窗体。

因此须要一个数组存储全部子窗体对象。关闭时,遍历数组就可以。
3.子窗体还能够再打开子窗体。

无限循环下去。因此须要推断。


此需求能够通过两个方法实现。

  • 调用子窗体的关闭函数。
    此方法易于理解,可是实际实现过程中发现浏览器的关闭事件并没有。

    且须要是button点击关闭还是快捷键关闭,略微麻烦一些、

  • 递归关闭子窗体
    此方法实现简单,缺点就是全部的窗体存储子窗体的对象数组需同名

以下是使用递归关闭子窗体及子窗体的子窗体方法

function closeSonWindow(win){
    for(var index=0;index<win.length;index++){
        //假设窗体已关闭
        if(win[index].closed){
            continue;
        }
        //假设窗体没有能够打开的子窗体
        if(typeof(win[index].openedWindow)=="undefined"){
            win[index].close();
            continue;
        }
        if(win[index].openedWindow.length==0){
            win[index].close();
        }else{
            closeSonWindow(win[index].openedWindow);
            win[index].close();
        }
    }
}

以上是关于window.open 打开子窗体,关闭全部的子窗体的主要内容,如果未能解决你的问题,请参考以下文章

高难的WINFORM问题在窗体里点击关闭按钮把窗体隐藏而不是关闭

C#winform中父窗体打开后下面有一排导航,导航打开子窗体,子窗体停靠在父窗体中间

C# winform 父窗口子窗口按钮控制

vb2013 已获得主窗口句柄,怎么遍历所有子窗句柄到TreeView中?

如何监听子窗口关闭?

window.open()打开一个子窗口,怎么实现在子窗口选择数据,然后提交把数据加到父窗口。