当前位置: 首页 > 面试题库 >

是否有可能用JavaScript打开弹出窗口,然后检测用户何时关闭它?

邹修真
2023-03-14
问题内容

标题中几乎所有问题。

是否可以(以及如何?)用JavaScript打开弹出窗口,然后检测用户何时关闭它?

我在项目中使用jquery,所以jquery解决方案会很好。干杯!


问题答案:

如果您可以控制弹出窗口的内容,请在该窗口中处理窗口的unload事件,并通过opener属性通知原始窗口,首先检查打开器是否已关闭。请注意,这在Opera中并不总是有效。

window.onunload = function() {
    var win = window.opener;
    if (!win.closed) {
        win.someFunctionToCallWhenPopUpCloses();
    }
};

由于该unload事件将在用户每次离开弹出窗口中的页面时触发,而不仅仅是关闭窗口时触发,因此您应该检查弹出窗口在以下位置是否确实已关闭someFunctionToCallWhenPopUpCloses

var popUp = window.open("popup.html", "thePopUp", "");
function someFunctionToCallWhenPopUpCloses() {
    window.setTimeout(function() {
        if (popUp.closed) {
            alert("Pop-up definitely closed");
        }
    }, 1);
}

如果您无法控制弹出窗口的内容,或者您​​的目标浏览器之一不支持该unload事件,则可以在主窗口中使用某种轮询解决方案。调整间隔以适合。

var win = window.open("popup.html", "thePopUp", "");
var pollTimer = window.setInterval(function() {
    if (win.closed !== false) { // !== is required for compatibility with Opera
        window.clearInterval(pollTimer);
        someFunctionToCallWhenPopUpCloses();
    }
}, 200);


 类似资料:
  • 本文向大家介绍javascript在当前窗口关闭前检测窗口是否关闭,包括了javascript在当前窗口关闭前检测窗口是否关闭的使用技巧和注意事项,需要的朋友参考一下 在当前窗口关闭前,检测当前窗口是否关闭 在ie9中,如果刷新文档的话,unloadform和onbeforeunload都会执行,如果是关闭页面的话只会执行onbeforeunload事件 值得注意的是,onunload在关闭页面时

  • 问题内容: 我在JPopupMenu中有一个JComboBox(以及其他组件)。事实证明,每当我打开组合框的弹出窗口(以选择一个项目)时,父级JPopupMenu都会关闭。我一直在尝试找到一种方法来覆盖此功能,但无济于事。 有没有人建议防止关闭父级JPopupMenu?谢谢! 问题答案: 这不可能直接实现,很难覆盖已知的错误,另一方面,Swing不允许同时使用两个lightwieght弹出组件 但

  • 问题内容: 有没有一种方法可以检测用户是否试图关闭窗口?例如,在Tkinter中,我们可以执行以下操作: 谢谢。 问题答案: 覆盖主窗口中的 方法。 例如: 另一种可能性是使用的 信号,如下所示:

  • 问题内容: 我通过window.open打开了一个弹出窗口。使用JavaScript打开,我想在关闭此弹出窗口时刷新父页面。(onclose事件?)我该怎么办? 问题答案: 您可以使用“ window.opener”访问父窗口,因此,在子窗口中编写如下内容:

  • 我正在尝试创建弹出与Vimeo视频在里面。我的页面上有divideid=“showvideo”。单击要打开弹出窗口的div(带有id=“Opened-Video”的新div)。id=“open-video”的Div有如下所示的Viemo视频的iframe 使用src URL中的?autoplay=1参数将此iframe设置为自动播放。 这是我的JavaScript 这就管用了。 您将注意到html

  • 问题内容: 有谁知道我可以使用JavaScript检查浏览器窗口何时关闭并弹出确认对话框询问用户是否确认退出浏览器还是改变主意的任何方式? 问题答案: window.onbeforeunload = function (e) { var e = e || window.event;