Событие или методы для проверки полосы

Есть ли способ вызвать событие, когда мода Stripe Checkout закрыта?

Задержка между задержкой Stripe и ее ответом составляет около 0,5-1 секунды. В это время пользователь может щелкнуть со страницы и т.д. Чтобы решить эту проблему, мы можем сделать что-то вроде отключения всех ссылок или поместить надпись ( "обложка" ) поверх страницы, которая удаляется только тогда, когда Stripe завершена обработка,

Проблема заключается в том, что невозможно закрыть этот оверлей, если человек решает закрыть модальный режим Stripe (вместо того, чтобы пытаться обработать платеж). Вы не можете настроить таргетинг на модальный (например, $('. Stripe-app')) из-за той же политики происхождения.

Любые альтернативные идеи?

Мой код ниже, адаптирован из https://stripe.com/docs/checkout.

// custom Stripe checkout button with custom overlay to avoid UI confusion during payment processing
$('.btn-stripe').click(function(){

  var token = function(res){
    var $input = $('<input type=hidden name=stripeToken />').val(res.id);
    $('.form-stripe').append($input).submit();
  };

  StripeCheckout.open({
    key:         STRIPE_KEY,
    address:     false,
    amount:      STRIPE_AMT,
    currency:    'usd',
    name:        'Purchase',
    description: STRIPE_DESC,
    panelLabel:  'Checkout',
    token:       token
  });

    $('.cover-all').show();

  return false;
});

Ответ 1

В комментарии от @brian было подтверждено, что задержка возникла после возвращения маркера Stripe и до отправки формы. Чтобы устранить исходную проблему, добавьте оверлей и/или отключите элементы по мере необходимости после возвращения маркера.

// custom Stripe checkout button with disabling of links/buttons until form is submitted
$('.btn-stripe').click(function(){

  var token = function(res){
    var $input = $('<input type=hidden name=stripeToken />').val(res.id);

    // show processing message, disable links and buttons until form is submitted and reloads
    $('a').bind("click", function() { return false; });
    $('button').addClass('disabled');
    $('.overlay-container').show();

    // submit form
    $('.form-stripe').append($input).submit();
  };

  StripeCheckout.open({
    key:         'key',
    address:     false,
    amount:      1000,
    currency:    'usd',
    name:        'Purchase',
    description: 'Description',
    panelLabel:  'Checkout',
    token:       token
  });

  return false;
});

Ответ 2

Лучший способ справиться с этим может состоять в том, чтобы показать прядильщик или что-то в процессе его обработки.

Закрыто - это опция, предоставляемая Stripe для пользовательской интеграции. Он вызывается всякий раз, когда форма отправляется или закрывается нажатием кнопки X. Надеюсь, это может быть полезно.
eg: handler.open({closed : function(){/* some function here*/}})