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

时间:2012-05-22 12:47:54

标签: javascript popup

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

为了让Paypal窗口打开而不被阻止,我使用的是一个target =“_ blank”的锚。哪个是完美的,除了事实,我不能在Paypal付款完成后关闭它,因为window.close()不适用于未通过window.open()打开的窗口。

如何制作它以便它不会被阻止作为弹出窗口我以后可以用JS关闭它?

1 个答案:

答案 0 :(得分:22)

  

为了让Paypal窗口打开而不被阻止,我使用的是一个目标=“_ blank”的锚。

这是一个选项,但只要您在处理程序中为用户生成的事件(如window.open)调用click,就可以打开弹出窗口。因此,请确保从链接上的window.open处理程序中调用click(然后您可以将其关闭)。现代弹出窗口阻止程序(过去几年中的任何内容)都会阻止不是由用户事件触发的弹出窗口,而是允许弹出窗口阻止弹出窗口。

Live example | source

HTML:

<p><a href="#" id="target">Click to open popup</a>; it will close automatically after five seconds.</p>

JavaScript的:

(function() {

  document.getElementById("target").onclick = function() {
    var wnd = window.open("http://stackoverflow.com");
    setTimeout(function() {
      wnd.close();
    }, 5000);
    return false;
  };

})();