Я пытаюсь открыть окно (весеннее веб-приложение) из другого веб-приложения (веб-приложение на основе сервлета Java). Оба развернуты на одном сервере (например, JBoss).

Мое требование заключается в функции JavaScript, я должен открыть окно, и выполнение должно дождаться закрытия окна. Это потому, что я верну что-то в случае успеха (или если пользователь закроет окно), и дальнейшее выполнение продолжается с этим возвращаемым значением.

//some statements...
var win = window.open("http://localhost/webapp/");

Я пробую этот код ниже. Но всплывающее окно ожидает завершения цикла while и не отображает страницу. Принудительное закрытие окна тоже не помогает.

while(!win.closed){}
//some statements...

Я старался..

var windowOpened = true;
var timer = setInterval(function(){
if(win.closed){windowOpened = false; clearInterval(timer);}
}, 500);
while(windowOpened){}
//statements that need to run after window closed...

Бесполезно ... Используемые рекурсивные функции .. все та же проблема ..

Я могу разделить код, скажем

var timer = setInterval(function(){
if(win.closed){
clearInterval(timer);
//statements that need to run after window closed...
}
}, 500);

Но я хочу знать, есть возможность или нет. Я расширяю уже существующий процесс, и это может избавить от дублирования кодов.

Заранее спасибо

1
RPN 16 Ноя 2018 в 12:01

1 ответ

Лучший ответ

Родительский код js

<script>
    var myexecution = 1;
    var callbackreceived = false;
    console.log(myexecution);
    //function to execute from child
    function myFunc() {
        callbackreceived = true;
        alert('Continue your process')
    }
    window.open("http://localhost:54954/child.html");       

</script>

Дочерний js-код

    var RunParentFunction = function () {
        window.parent.myFunc();
    }; window.onbeforeunload = function () { RunParentFunction(); }

Вы можете использовать parent.myFunc, чтобы вызвать это

0
Just code 16 Ноя 2018 в 17:30