У меня есть страница, на которой встраивается iframe из другого домена (для оплаты кредитной картой). Страница, загруженная в iframe, регистрирует обработчик onbeforeunload. Это означает, что всякий раз, когда я пытаюсь отойти от родительской страницы или нажать кнопку перезагрузки, он запрашивает подтверждение у пользователя. Хорошо, пока.
Однако на родительской странице должны быть взаимодействия, которые должны работать без вызова обработчика onbeforeunload, вызываемого в iframe. Вот упрощенный пример:
<iframe src="https://paymentprovider.com/payment"></iframe>
<a href="/abort_payment">Abort payment (fire onbeforeunload)</a>
<a href="/alternative_payment">I don't have a credit card (suppress onbeforeunload)</a>
Я не могу использовать песочницу iframe, потому что для работы iframe требуется Javascript. Я также попытался установить атрибут песочницы в iframe динамически, но это не сработало надежно.
Единственный способ, которым я смог подавить окно подтверждения, это удалить iframe в обработчике ссылок onclick:
iframe = document.getElementById("payment_iframe");
iframe.parentNode.removeChild(iframe)
Видите ли вы какие-либо проблемы с этим взломом? Это вообще должно работать? Знаете ли вы какой-либо лучший способ сделать то же самое?
Спасибо