关闭弹出窗口(如果存在)

时间:2009-07-01 16:32:04

标签: javascript javascript-events

使用一些javascript我打开弹出窗口没有问题:

function myPopup2(x){
    if (x==1)
    {
        myWindow = window.open( "timer.html", "", "height = 150, width = 300" );
    }else
    {
        myWindow.close();
    }
}

然后我运行一些PHP脚本,刷新重新加载页面。

当我稍后再关闭弹出窗口时 - 它没有,因为页面已经重新加载并且myWindow变量消失了。 'myWindow'未定义是javascript错误。

任何人都知道如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

如果在打开窗口时为窗口指定名称,则可以稍后获取窗口句柄。

function myPopup2(x){
    if (x==1)
    {
        myWindow = window.open( "timer.html", "windowName", "height = 150, width = 300" );
    }else
    {
        if (!myWindow) {
            myWindow = window.open("", "windowName");
        }
        myWindow.close();
    }
}

答案 1 :(得分:0)

如此处所述:http://www.faqts.com/knowledge_base/view.phtml/aid/1460

window.open()接受第二个参数,即窗口的名称。在刷新时,您可以检查该窗口的状态,并在必要时关闭它。正如链接中所讨论的那样,刷新后没有直接的方法来检查窗口,所以你必须做这样的事情:

var win = window.open ('', 'windowName')

然后以胜利运作。

(编辑:我最初有一个涉及cookie的第二个想法,但我认为这并不能真正为你节省任何东西,因为你仍然必须按照上述步骤访问窗口。)

答案 2 :(得分:0)

让子窗口每隔几秒执行一次函数,检查父窗口是否有标志,表示它应该关闭。父窗口可以在重新加载时设置标志,而不是试图追踪孩子。

答案 3 :(得分:-1)

我想你不能。导致子窗口(timer.html)在刷新后失去与父窗口的连接。如果你可以在另一个窗口中关闭每个窗口而两者之间没有任何参考,那将是非常可怕的。