1

index.jspこのリンクhttps://www.dropbox.com/s/0smy7nlcmilkqt4/index.jspで利用可能なページがあります。

このファイルには、という名前のJavaScriptメソッドが含まれており、validateloginForm()入力フィールドの検証に使用されます。

フィールドが入力されている場合、別のJSPページにリダイレクトされますが、alert("after");行の下のwindow.open()行を削除すると、別のページにリダイレクトされません。

alert("after")に電話した後、なぜこれが必要なのか教えてくださいwindow.open()

function validateloginForm()
{
    var empId = document.getElementById("empId").value;
    var empPass = document.getElementById("empPass").value;

    if( empId == "" )
    {
        alert("Enter id !");
    }
    else if( empPass == "" )
    {
        alert("Enter password !");
    }
    else
    {                 window.open("validateUser.jsp?"+"empId="+empId+"&empPass="+empPass,"_parent","",""); 
         alert("after");   
     }
}
4

2 に答える 2

2

後のコードwindow.openはすぐに実行され、その時点ではウィンドウがロードされないためです。

使用.alertは偶然です。ウィンドウが読み込まれる前にアラートを閉じた場合でも、アラートは機能しません。

var newwin = window.open("validateUser.jsp?"+"empId="+empId+"&empPass="+empPass,"_parent","",""); 
newwin.onload = function() {
    //do stuff
};
于 2012-08-11T11:09:36.080 に答える
1

ブラウザは、によって参照されるURLがロードされるのを待たずwindow.open()に戻ります。したがって、がないalert()と、「validateloginForm」関数はすぐに戻ります。

通常、ブラウザの内容は非同期です。特に、終了するのを待つ方法はありませんwindow.open()。もちろん、新しいウィンドウにロードされたページのコードで、親(「オープナー」)ページの関数を呼び出すことができます。

于 2012-08-11T11:09:23.507 に答える