JavaScript ждет всплывающего окна, чтобы вернуть значение для родительского процесса для обработки - PullRequest
0 голосов
/ 20 октября 2018

У меня есть эти программы, которые должны выполняться синхронно, но никогда не работают.Есть ли необходимость использовать обратный вызов.Мне нужно дождаться ответа дочернего элемента, чтобы продолжить родительский процесс.

Проблема с прикрепленным кодом заключается в том, что предупреждающее сообщение всегда появляется до появления всплывающего дочернего элемента.Я хочу, чтобы всплывающее окно заполнило входное текстовое значение на родительском экране, а затем закрылось.Родительское окно будет обрабатывать базу на основе введенного текстового значения.

Миллион благодарностей заранее!

Родительская программа:

<html>
<head></head>
<body>
<script>        

var dsp_msg;

function PopupCenter(url, title, w, h) {
// Fixes dual-screen position                         Most browsers      Firefox
var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : window.screenX;
var dualScreenTop = window.screenTop != undefined ? window.screenTop : window.screenY;

var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;

var left = ((width / 2) - (w / 2)) + dualScreenLeft;
var top = ((height / 2) - (h / 2)) + dualScreenTop;
var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);

// Puts focus on the newWindow
if (window.focus) {
    newWindow.focus();
}
}

function call_child()   {

 PopupCenter('DisplayQuestion1.htm','Prompt Question','900','500'); // open popup
 var ans_from_popup = document.getElementById("returnval").value;
 console.log(ans_from_popup);
 if (ans_from_popup) { dsp_msg = " correctly. "; }
 if (!ans_from_popup) { dsp_msg = " wrongly."; }
 alert("Player answered " + dsp_msg + " Is the player deserve another chance? ");
}

</script>

<input type="button" value="Click" onclick="call_child();">
<input type="text" id="returnval" >
</body>

ДочернийПрограмма:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p id="PQuestion">
7 x 7 = ?
</p>
<form>
    <br><input type='radio' name='optradio' value='39' required>39 <label id="Radio1"></label>
    <br><input type='radio' name='optradio' value='40' required>40 <label id="Radio2"></label>
    <br><input type='radio' name='optradio' value='49' required>49 <label id="Radio3"></label>
    <br><input type='radio' name='optradio' value='50' required>50 <label id="Radio4"></label><br />
    <br>

    <input type="button" name="Close" id="Quit" value="Submit" onclick="return quitBox('quit');" />
</form>

<script>
function quitBox(cmd)
{

    var radioSel = document.forms[0];
    var txt = "";
    var i;
    for (i = 0; i < radioSel.length; i++) {
    if (radioSel[i].checked) {
        txt = radioSel[i].value;
        }
    }
var AnswerFlag;
    if (txt == 49) {
    alert('Your selection of ' + txt + ' is correct!');
        AnswerFlag = true;
    }
    else
    { alert('Your selection of ' + txt + ' is wrong!');
      AnswerFlag = false;
    }
    //prompt("in Display question - " + localStorage.getItem("Resultsent"));
    if (cmd=='quit')
        {
                 if (window.opener != null && !window.opener.closed) {
                    var txtName = window.opener.document.getElementById("returnval");
                    txtName.value = AnswerFlag;
            }

        // end taken script
        open(location, '_self').close();
        }
    return false;
   }

  </script>

...