2014-05-06 163 views
1

我想关闭所有打开的弹出窗口使用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(); 
     } 
    } 
} 

我调用该函数'CloseChildWindow()'在页面的body onunload事件中。但是,当我尝试打开弹出窗口时,它立即关闭,弹出窗口未完全打开。

我的代码有什么问题?

在此先感谢。

+0

那里有很好的代码。你可以提供一些jsfiddle随机弹出窗口。 – SSS

+2

浏览器弹出式窗口拦截器? – OrangeDog

回答

0

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

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

您可能需要做的是添加一个“不卸载”标志,当打开弹出窗口并在setTimeout后清除时,该标志将被设置。然后,您的onunload事件可以简单地检查该标志,如果设置了则不做任何事情。