【问题标题】:How to open and then close a window without getting blocked as a popup?如何打开然后关闭窗口而不会被阻止为弹出窗口?
【发布时间】:2012-05-22 12:47:53
【问题描述】:

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

为了让 Paypal 窗口打开而不会被阻止,我使用了 target="_blank" 的锚点。除了以下事实外,它工作得很好,因为window.close() 不适用于不是通过window.open() 打开的窗口,所以在 Paypal 付款完成后我无法关闭它。

我怎样才能使它既不被阻止为弹出窗口,又可以在以后用 JS 关闭它?

【问题讨论】:

标签: javascript popup


【解决方案1】:

为了让 Paypal 窗口在不被阻止的情况下打开,我使用了 target="_blank" 的锚点。

这是一种选择,但只要您在处理程序中为用户生成的事件(如click)调用window.open,您就可以打开弹出窗口。所以只要确保你从链接上的click 处理程序中调用window.open(然后你可以关闭它)。现代弹出式窗口拦截器(过去几年的任何内容)会阻止不是由用户事件触发的弹出式窗口,但允许由用户事件触发的弹出式窗口。

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;
  };

})();

【讨论】:

  • 这里的定时器有什么需要你能解释的更清楚吗
  • @VarunKumar:上面的setTimeout是异步PayPal支付调用的占位符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多