我正在尝试使用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事件中。但是当我尝试打开弹出窗口时,它会立即关闭,因此弹出窗口并没有完全打开。
我的代码有什么问题?
提前致谢。
答案 0 :(得分:0)
弹出窗口必须由用户点击启动。我假设这对你来说不是问题,因为你 看到一个弹出窗口,如果只是一秒钟。这意味着浏览器无法阻止它。
但是,如果您在点击链接时执行此操作,则onunload
事件将触发...即使页面本身未被卸载!在进行一项特别雄心勃勃的项目时,我认为这是一个主要问题。
您可能需要做的是添加一个&#34;不要卸载&#34; flag,在setTimeout
之后打开并清除弹出窗口时设置。然后,您的onunload
事件可以简单地检查该标志,如果已设置则不执行任何操作。