Я использую Stripe Elements с vue-stripe-elements-plus во внутреннем одностраничном приложении.Поскольку нет необходимости поддерживать код Stripe после того, как пользователь оставляет модуль смены кредитной карты, я хочу полностью выгрузить Stripe, но это не так просто.
После того, как я выгрузил его в destroyed
компонентный хук и удалил добавленные фреймы:
destroyed () {
this.$unloadScript('https://js.stripe.com/v3/');
//delete window.Stripe; // commented because this makes stripe add iframes twice
let stripeIframes = [
document.querySelectorAll('[name^=__privateStripeMetricsController]'),
document.querySelectorAll('[name^=__privateStripeController]'),
];
stripeIframes.forEach(iframes => iframes.forEach(iframe => {
iframe.parentNode.removeChild(iframe);
}));
},
фреймы, которые были добавлены Stripe:
снова появляются через некоторое время (один из них):
Похоже, этот iframe воссоздается слушателями Stripeкоторые были прикреплены к объекту окна при событии сообщения.Я не могу удалить этот слушатель, потому что функция обработчика находится в iframe, который находится внутри iframe, поэтому браузер не разрешает мне получать доступ к его внутренним объектам.
Кроме того, этот слушатель делает нежелательные запросы на чередование:
XHR finished loading: POST "https://m.stripe.com/4".