Как выполнить javascript, полученное после отправки формы внутри iframe - PullRequest
0 голосов
/ 07 апреля 2020

В моем приложении я отправляю форму на внешний 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);
...