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

Javascript 关闭弹出窗口(如果存在),javascript,javascript-events,Javascript,Javascript Events,使用一些javascript,我打开了一个无问题弹出窗口,使用: function myPopup2(x){ if (x==1) { myWindow = window.open( "timer.html", "", "height = 150, width = 300" ); }else { myWindow.close(); } } 然后我运行一些PHP脚本,刷新并重新加载页面 当我稍后去关闭弹出窗口时,它不会关闭,因

使用一些javascript,我打开了一个无问题弹出窗口,使用:

function myPopup2(x){
    if (x==1)
    {
        myWindow = window.open( "timer.html", "", "height = 150, width = 300" );
    }else
    {
        myWindow.close();
    }
}
然后我运行一些PHP脚本,刷新并重新加载页面

当我稍后去关闭弹出窗口时,它不会关闭,因为页面已经被重新加载,myWindow变量也消失了myWindow'未定义是javascript错误

有人知道我该怎么做吗

如下所述:

open()接受第二个参数,即窗口的名称。刷新时,您可以检查该窗口的状态,并在必要时关闭它。如链接中所述,刷新后无法直接检查窗口,因此您必须执行以下操作:

var win = window.open ('', 'windowName')
然后在win上进行操作


(编辑:我最初有一个关于cookies的第二个想法,但我认为这并不能真正为您节省任何东西,因为您仍然需要执行上述操作才能访问窗口。)

我想您不能。导致子窗口(timer.html)在刷新父窗口后立即失去与父窗口的连接。如果你可以从另一个窗口中关闭每个窗口,而不在两者之间进行任何引用,那将非常可怕。

如果你在打开窗口时给它起了一个名字,那么以后就有可能得到一个窗口的句柄

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();
    }
}

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

你只是抢先一步!。。不错。但是如果没有if语句,它也可以工作S myWindow=window.open(“,“windowName”);myWindow.close();没有",;不需要:if(!myWindow){bit当窗口未打开时,语句
window.open(“,”windowName”);
将显示一个空白窗口,而
myWindow.close();
将其关闭。因此,您将看到一个打开和关闭的窗口,造成一种恼人的效果。有没有办法避免这种情况?