JavaScript:弹出窗口立即关闭

时间:2014-05-06 09:32:45

标签: javascript

我正在尝试使用javascript关闭所有打开的弹出窗口。我尝试了以下代码,但它没有用。

这是我打开弹出窗口的代码..

var childWindow = new Array();  
function PopupCenter(pageURL, title, w, h) 
{    
    var left = (screen.width/2) - (w/2);
    var top = (screen.height/2) - (h/2);
    var targetWin = window.open(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
    childWindow[childWindow.length] = targetWin;

    if (window.focus) {
        targetWin.focus()
    }

    return false;       
}

这是我关闭所有打开弹出窗口的代码..

function CloseChildWindow() 
{
   if (childWindow.length != 0) 
   {
       for (var i = 0; i < childWindow.length; i++) 
       {
           childWindow[i].close();
       }
    } 
}

我调用函数&#39; CloseChildWindow()&#39;在页面的body onunload事件中。但是当我尝试打开弹出窗口时,它会立即关闭,因此弹出窗口并没有完全打开。

我的代码有什么问题?

提前致谢。

1 个答案:

答案 0 :(得分:0)

弹出窗口必须由用户点击启动。我假设这对你来说不是问题,因为你 看到一个弹出窗口,如果只是一秒钟。这意味着浏览器无法阻止它。

但是,如果您在点击链接时执行此操作,则onunload事件触发...即使页面本身未被卸载!在进行一项特别雄心勃勃的项目时,我认为这是一个主要问题。

您可能需要做的是添加一个&#34;不要卸载&#34; flag,在setTimeout之后打开并清除弹出窗口时设置。然后,您的onunload事件可以简单地检查该标志,如果已设置则不执行任何操作。