2012-08-11 4 views
1

У меня есть страница index.jsp, доступная по этой ссылке https://www.dropbox.com/s/0smy7nlcmilkqt4/index.jsp.Зачем мне нужно писать alert() после вызова window.open()?

Этот файл содержит метод 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"); 
    } 
} 

ответ

2

Поскольку код после window.open выполняется немедленно, и окно не загружается в этот момент.

Использование .alert является совпадением, если вы отклонили предупреждение до того, как окно было загружено, оно все равно не сработает.

var newwin = window.open("validateUser.jsp?"+"empId="+empId+"&empPass="+empPass,"_parent","",""); 
newwin.onload = function() { 
    //do stuff 
}; 
1

браузер не будет ждать URL, на который ссылается window.open() для загрузки, прежде чем вернуться. Таким образом, без функции alert() ваша функция «validateloginForm» сразу вернется.

В общем случае вещи в браузере asynchronous. Нет никакого способа, в частности, дождаться завершения window.open(). Конечно, код на странице, загруженной в новое окно, вызовет некоторую функцию обратно на родительскую («открытую») страницу.

+0

спасибо вам обоим (Esailija и Pointy) за это. –

Смежные вопросы