我正在尝试使用 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();
}
}
}
我在页面的 onunload 事件主体中调用函数“CloseChildWindow()”。但是当我尝试打开弹出窗口时,它立即关闭,因此弹出窗口没有完全打开。
我的代码有什么问题?
提前致谢。
最佳答案
弹出窗口必须由用户单击启动。我假设这对您来说不是问题,因为您会看到一个弹出窗口,哪怕只是一秒钟。这意味着浏览器没有阻止它。
但是,如果您通过单击链接执行此操作,则 onunload
事件将会触发...即使页面本身未卸载!当我从事一个特别雄心勃勃的项目时,这是一个主要问题。
您可能需要做的是添加一个“不卸载”标志,该标志在打开弹出窗口时设置,并在 setTimeout
后清除。然后,您的 onunload
事件可以简单地检查该标志,如果设置了该标志,则不执行任何操作。
关于JavaScript:弹出窗口立即关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23490910/