В моем приложении я отправляю форму на внешний URL-адрес с помощью iframe. При отправке формы я получаю javascript в качестве ответа внутри iframe. Я хочу выполнить скрипт, который я получил в ответ. Но скрипт не выполняется, и я не могу извлечь данные из ответа. Это интеграция с платежами, и я перехожу по этой ссылке
Ниже приведен код до и после отправки формы
DOM перед отправкой формы, форма добавляется в iframe динамически при событие window.load
<div class="3ds-empty-iframe">
<iframe height="1" width="1" id="ddciframe" style="display:none">
<body><form id="collectionForm" method="POST" action="https://secure-test.worldpay.com/shopper/3ds/ddc.html">
<input type="hidden" id="ddcBin" name="Bin" value="4444333322221111">
<input type="hidden" id="ddcJWT" name="JWT" value="sfsfJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2OWFkYzE4NS0xNzQ4LTQ1MjUtOWVmOS00M2YyNTlhMWMyZDYiLCJpYXQiOjE1NDg4Mzg4NTUsImlzcyI6IjViZDllMGU0NDQ0ZGNlMTUzNDI4Yzk0MCIsIk9yZ1VuaXRJZCI6IjViZDliNTVlNDQ0NDc2MWFjMGFmMWM4MCJ9.qTyYn4rItMMNdnh6ouqW6ZmcCNzaG9JI_GdWGIaq6rY">
</form>
</body>
</iframe>
</div>
После отправки формы с использованием метода $ ('# collectionForm'). submit (), DOM выглядит как внутри iframe
<script>
sendNotification(true, "822193d2-6bf4-4e3a-a79b-edasab7f8d33");
function sendNotification(status, sessionId){
try{
var message = {
MessageType: 'profile.completed',
SessionId: sessionId,
Status: status
};
window.parent.postMessage(JSON.stringify(message), '*');
} catch(error){
console.error('Failed to notify parent', error)
}
}
</script>
, я хочу этот скрипт чтобы выполнить, чтобы я мог поймать ответ в window.addeventlistener, как показано ниже
window.addEventListener("message", function (event) {
//This is a Cardinal Commerce URL in live.
if (event.origin === "https://secure-test.worldpay.com/") {
var data = JSON.parse(event.data);
console.warn('Merchant received a message:', data);
if (data !== undefined && data.Status) {
// Extract the value of SessionId for onward processing.
alert(data);
}
}
}, false);