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

4

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

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

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

stackoverflow.com/questions/7139103/…  отсутствие исследований .. возможно, повторяющийся вопрос yajay
Поместите информацию о состоянии в URL обратного вызова. Не создавайте рабочий процесс с несколькими окнами. Quentin
stackoverflow.com/questions/888964/…  а такжеstackoverflow.com/questions/9616150/… возможный дубликат shareef

Ваш Ответ

1   ответ
20

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

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

Похожие вопросы