情况是这样的。使用 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/