JavaScript:弹出窗口立即关闭

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

我在页面的 onunload 事件主体中调用函数“CloseChildWindow()”。但是当我尝试打开弹出窗口时,它立即关闭,因此弹出窗口没有完全打开。

我的代码有什么问题?

提前致谢。

最佳答案

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

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

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

关于JavaScript:弹出窗口立即关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23490910/

相关文章:

javascript - 单击播放音频时出现不必要的延迟

javascript - Bower 安装命令在 Windows 上不起作用

javascript - 为什么 Math.floor(Math.random() * n) 比 Date.now() % n 更好地选择 [0, n] 之间的随机数?

javascript - 如何捕捉 GMail 自动刷新

javascript - Hammer.js on tap 停止滚动父 div

javascript - 复制模式但更改文本和图像

javascript - 将包含一个元素的数组拆分为包含多个元素的数组

javascript - 我在 babel 中使用 Symbol.isConcatSpread 有问题吗?

javascript - jQuery UI 自动完成 : how to prefetch from ajax data source

javascript - 如何在上传多个选定视频之前进行多个视频预览