我想在我的网站上使用javascript打开一个新的银行支付标签,并且没有主窗口导航,
当用户从银行支付回到返回URL时,我想从另一个窗口(如果可能)检测到返回URL的回复,或者只是通知主窗口该事务已完成且它应该检查数据库是否有更新。
我在几个网站上看到过这种行为,例如加载会话的popup->login->popup closes->main window reloads
,问题是我不知道这个方法叫什么,所以我不知道我的关键字是什么我正在寻找。
我真正需要的是这个方法的名称,或者它是如何完成的(作为javascript中的某个关键字或其他东西)
提前致谢
答案 0 :(得分:11)
您可以使用window.open
打开新页面,然后定期检查窗口是否已关闭。 window.open
会返回对已打开窗口的引用,您可以使用windowHandle.closed
检查它是否已关闭。
btn.onclick = function() {
var win = window.open(
"http://www.stackoverflow.com",
"Secure Payment");
var timer = setInterval(function() {
if (win.closed) {
clearInterval(timer);
alert("'Secure Payment' window closed !");
}
}, 500);
}
另请参阅此 short demo 。
有关window.open
和最佳做法的详情,请查看 MDN 。
答案 1 :(得分:4)
从我发现的子窗口传输数据的最佳方法。
父代码
window.open(url);
await new Promise(resolve => window.addEventListener('custom', resolve));
子代码
if(window.opener) {
const customEvent = new CustomEvent('custom', { detail: {} });
window.opener.dispatchEvent(customEvent);
window.close();
}
答案 2 :(得分:2)
在关闭弹出窗口之前,请尝试opener.someFunction()
在打开它的窗口中调用一个函数。请注意,如果用户关闭了第一个窗口,或者用户将其导航到另一个站点,或者两个窗口因任何原因位于不同的域中,则会失败。