Как открыть, а затем закрыть окно, не блокируясь как всплывающее окно?

Я хочу направить клиента на сайте электронной торговли для оплаты через сайт Paypal. Я хотел бы, чтобы платеж осуществлялся в новой вкладке / окне, чтобы клиент не терял текущее состояние веб-страницы, на которой он / она находится.

Чтобы окно Paypal открывалось без блокировки, я использую якорь с target = & quot; _blank & quot ;. Это работает отлично, за исключением того факта, что я не могу закрыть его после того, как PayPal платеж выполнен, так какwindow.close() не работает для окон, которые не были открыты черезwindow.open().

Как мне сделать так, чтобы это ОБА не было заблокировано как всплывающее окно И я могу закрыть его с помощью JS позже?

 shareef22 мая 2012 г., 14:49
stackoverflow.com/questions/888964/…  а такжеstackoverflow.com/questions/9616150/… возможный дубликат
 yajay02 июл. 2013 г., 12:18
stackoverflow.com/questions/7139103/…  отсутствие исследований .. возможно, повторяющийся вопрос
 Quentin22 мая 2012 г., 14:52
Поместите информацию о состоянии в URL обратного вызова. Не создавайте рабочий процесс с несколькими окнами.

Ответы на вопрос(1)

Решение Вопроса

I am using an anchor with target="_blank".

Это один из вариантов, но пока вы звонитеwindow.open из обработчика для пользовательского события (например,click), вы можете открыть всплывающие окна. Так что просто позвонитеwindow.open изнутриclick обработчик по ссылке (а потом ее можно закрыть). Современные блокировщики всплывающих окон (что-либо за последние несколько лет) блокируют всплывающие окна, которые не запускаются пользовательским событием, но допускают такие, которые есть.

Живой пример | источник:

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

})();
 11 мая 2016 г., 12:44
@VarunKumar:setTimeout выше заполнитель для асинхронного платежного вызова PayPal.
 11 мая 2016 г., 12:32
зачем нужен таймер, можете ли вы объяснить это более четко
 11 мая 2016 г., 12:47
TQ @ T-J-Crowder

Ваш ответ на вопрос