【问题标题】:Close all popup windows with Javascript使用 Javascript 关闭所有弹出窗口
【发布时间】:2009-08-03 00:16:06
【问题描述】:

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

例子:

  1. 通过单击打开 3 个新窗口 按钮,并使用 window.open() 来 打开所有 3 个新窗口。
  2. 单击一个按钮并关闭所有 3 弹出窗口聚集在一起。

【问题讨论】:

    标签: javascript


    【解决方案1】:
    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 上的第二个结果。将所有窗口存储在数组中后关闭它们。

    如果您不喜欢全局变量,这是一种更面向对象的方式。 (我不是 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();
                }
            }
        }
    }
    

    【讨论】:

    • 以免我们忘记push。它更干净、更快(通常):this.child.push(window.open(url, '', params);
    • 我无法编辑答案,但要小心在末尾添加 ) : this.child.push(window.open(url, '', params));在OOP解决方案中
    【解决方案2】:

    通过存储它们的句柄来跟踪打开的窗口,然后从按钮的单击处理程序中对窗口句柄使用close() 方法。

    就个人而言,我发现在 Web 界面中使用弹出窗口是一个非常烦人的功能。如果您可以通过使用基于 DOM 的对话框来避免它们,请这样做。 jQuery dialog 插件对此非常方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多