javascript - 当我的javascript打开的窗口关闭时如何捕获事件

标签 javascript events cross-browser window

情况是这样的。使用 JavaScript,我打开一个窗口,其中包含我域中的 URL,显示加载指示器。

大约一秒钟后,窗口的 URL 更改为 PayPal 窗口(其他域)。我希望能够在用户关闭 paypal 窗口时捕获事件,这样我就可以将用户重定向到正确的页面,说明支付失败。

我遇到了 window.onbeforeunload 但是当 url 更改为 PayPal 时会触发那个,但之后窗口关闭时不会触发。我该如何克服这个问题?

所以,这似乎不起作用,我在这里找不到任何其他答案:

    ppwin = window.open('paypal/loading.php', 'paypal_popup', 'width=900,height=500');
    ppwin.onbeforeunload = function(){
        //triggered when URL changes
        if (ppwin.closed) // false because window is still open.
            // Order failed
    }

即使我接受了答案,我仍然不满意。它有效,但仅此而已。如果有人提供更好的答案,我会更高兴!

最佳答案

我遇到了同样的问题,最后我做的是让父窗口定期检查弹出窗口是否关闭。任何替代解决方案都让我抓狂。

代码可能是这样的:

// Create popup window
var popup = window.open('http://www.google.com');

// Set interval to check if it has been closed
var windowCheckInterval = setInterval(function() { windowCheck(); }, 300);

// Check function
function windowCheck() {
    if (!popup || popup.closed) {
        clearInterval(windowCheckInterval);

        // Do something
    }
}

虽然是很粗鲁的方案,但是用户体验很好,编程也很简单。

您必须记住在进程以不同方式完成时(不仅仅是在窗口关闭时)清除间隔,如果有的话。

关于javascript - 当我的javascript打开的窗口关闭时如何捕获事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14458113/

相关文章:

javascript - 销毁 Node cron 作业或取消 Node 调度程序作业

javascript - 如何在后台对mysql数据进行匹配和分类?

javascript - 添加/删除 eventListeners,同时保持 "this"的实例上下文

.net - .net 事件的性能影响

javascript - 修改每个可能的 DOM 元素的原型(prototype)

javascript - 如何更改浏览器中所选文本的背景颜色?

javascript - 带文件上传的多步骤表单

java - 从终端捕获 System.in 事件

css - Firefox 默认字体大小问题

更改 HTML 的 JavaScript 函数不起作用