1

index.jsp在此链接上有一个可用页面https://www.dropbox.com/s/0smy7nlcmilkqt4/index.jsp

此文件包含一个名为validateloginForm()并用于验证输入字段的 JavaScript 方法。

如果填写了这些字段,那么它将重定向到另一个 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

浏览器在返回之前不会等待引用的 URLwindow.open()加载。因此,如果没有alert(),您的“validateloginForm”函数将立即返回。

通常浏览器中的东西是异步的。特别是没有办法等待window.open()完成。当然,您可以将页面中的代码加载到新窗口中调用父(“opener”)页面上的某些函数。

于 2012-08-11T11:09:23.507 回答