web-dev-qa-db-ja.com

ポップアップとしてブロックされることなくウィンドウを開いてから閉じる方法は?

Eコマースサイトの顧客にPaypalのウェブサイト経由で支払うように指示したい。顧客が現在のWebページの現在の状態を失わないように、新しいタブ/ウィンドウで支払いを行うようにしたいと思います。

Paypalウィンドウをブロックせずに開くために、target = "_blank"のアンカーを使用しています。事実を除いて完全に機能していますが、window.close()を介して開かれなかったウィンドウではwindow.open()が機能しないため、Paypalの支払いが完了した後に閉じることができません。

ポップアップとしてブロックされず、後でJSで閉じることができるようにするにはどうすればよいですか?

6
Yuval Cohen

Paypalウィンドウをブロックせずに開くために、target = "_blank"のアンカーを使用しています。

これは1つのオプションですが、ユーザーが生成したイベント(clickなど)のハンドラー内からwindow.openを呼び出す限り、ポップアップウィンドウを開くことができます。したがって、リンクのclickハンドラー内からwindow.openを呼び出すようにしてください(その後、リンクを閉じることができます)。最新のポップアップブロッカー(過去数年間のもの)は、ユーザーイベントによってトリガーされないポップアップをブロックしますが、トリガーされるポップアップは許可します。

実例 | ソース

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

})();
22
T.J. Crowder