如何打开然后关闭窗口而不被阻止为弹出窗口?

问题描述 投票:0回答:1

我想引导电子商务网站的客户通过 Paypal 网站付款。 我希望付款在新选项卡/窗口中完成,这样客户就不会丢失他/她所在网页的当前状态。

为了打开 Paypal 窗口而不被阻止,我使用了带有 target="_blank" 的锚点。这是完美的,除了事实上,我无法在 Paypal 付款完成后关闭它,因为

window.close()
不适用于未通过
window.open()
打开的窗口。

我该如何制作它,既不被阻止作为弹出窗口,又可以稍后用 JS 将其关闭?

javascript popup
1个回答
28
投票

为了让 Paypal 窗口打开而不被阻止,我使用了带有 target="_blank" 的锚点。

这是一种选择,但只要您从用户生成的事件的处理程序中调用

window.open
(如
click
),您就可以打开弹出窗口。因此,只需确保您从链接上的
window.open
处理程序中调用
click
(然后您可以关闭它)。现代弹出窗口阻止程序(过去几年的任何内容)会阻止不是由用户事件触发的弹出窗口,但允许由用户事件触发的弹出窗口。

<p><a href="#" id="target">Click to open popup</a>; it will close automatically after five seconds.</p>
document.getElementById("target").addEventListener("click", () => {
    const wnd = window.open("https://stackoverflow.com");
    setTimeout(() => {
        wnd.close();
    }, 5000);
    return false;
});

(不幸的是,堆栈片段不允许您这样做

window.open
。)

© www.soinside.com 2019 - 2024. All rights reserved.