我在此链接https://www.dropbox.com/s/0smy7nlcmilkqt4/index.jsp上有一个页面index.jsp
。
此文件包含名为validateloginForm()
的JavaScript方法,用于验证输入字段。
如果字段已填满,那么它将重定向到另一个JSP页面,但当我删除alert("after");
行下面的window.open()
行时,它不会重定向到另一个页面。
请在致电alert("after")
后告知我为什么需要window.open()
。{/ p>
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");
}
}
答案 0 :(得分:2)
因为window.open
之后的代码会立即执行,并且此时未加载窗口。
使用.alert
只是巧合,如果您在加载窗口之前解除了警报,它仍然无效。
var newwin = window.open("validateUser.jsp?"+"empId="+empId+"&empPass="+empPass,"_parent","","");
newwin.onload = function() {
//do stuff
};
答案 1 :(得分:1)
浏览器不会等待window.open()
引用的URL在返回之前加载。因此,如果没有alert()
,您的“validateloginForm”函数将立即返回。
浏览器中的内容通常是异步。特别是等待window.open()
完成是没有办法的。您可以将页面中的代码加载到新窗口中,然后在父(“开启者”)页面上调用某些函数。