使用Javascript关闭所有弹出窗口

时间:2009-08-03 00:16:07

标签: javascript

有谁知道如何在Javascript中关闭所有弹出窗口(javascript窗口弹出窗口)?

示例:

  1. 点击a打开3个新窗口 按钮,并使用window.open()来 打开所有3个新窗口。
  2. 点击按钮并关闭全部3 弹出窗口togather。

2 个答案:

答案 0 :(得分:8)

var childWindowHandles = new Array();

function openNewWindow(url, params) {
    childWindowHandles[childWindowHandles.length] = window.open(url, '', params);
}    

function closeChildWindows() {
    for (var loop=0; loop<childWindowHandles.length; loop++) 
    {
        if (!childWindowHandles[loop].closed)
        {
            childWindowHandles[loop].close();
        }
    }
}

Google上的第二个结果。将所有Windows存储在数组后关闭所有Windows。

如果你不喜欢全局变量,这是一种更多的OOP方式。 (我不是100%确定它有效,只是修改了上面的代码。

popups = new popups();
function popups()
{
    this.childs = new array();

    this.open = function(url, params)
    {
        this.child.push(window.open(url, '', params)); 
    }

    this.closeAll()
    {
        for(var loop=0; loop<this.childs.length; loop++)
        {
            if (!this.childs[loop].closed)
            {
                this.childs[loop].close();
            }
        }
    }
}

答案 1 :(得分:1)

通过存储句柄来跟踪打开的窗口,然后在按钮的点击处理程序的窗口句柄上使用close()方法。

就个人而言,我发现弹出窗口在Web界面中使用时会非常烦人。如果您可以通过使用基于DOM的对话框来避免它们,请执行此操作。 jQuery dialog插件非常方便。