Я немного удивлен, что любой из них работает, потому что вы даете setTimeout
строку, которая определяет функцию без ее вызова;если вы дадите setTimeout
строку, она, по сути, сделает eval
в строке, когда истечет время ожидания, что теоретически создаст, но не вызовет функцию.( Редактировать : И я подтвердил, что: http://jsbin.com/uvuje5)
Почти никогда не правильно и не нужно задавать setTimeout
строку; вместо этого, дать ей функцию:
function view_mail_popup_close()
{
setTimeout(function () { $('#popupbox').fadeOut('slow'); },200);
setTimeout(function () { window.location='view_mail.php'; },800);
}
Живой пример
Там функция создается немедленно, а ссылка на нее дается на setTimeout
, который будет вызывать ее по истечении времени ожидания.
(Не по теме: я также добавил пропущенную точку с запятой в конце window.location =
statemenet. В JavaScript есть точка с запятой, поэтому предыдущая версия будет работать, но я настоятельно рекомендую , никогда полагаясь на него.)
Обновление : Как указывает Капсула, на fadeOut
есть обратный вызов, который вы, вероятно, захотите использовать вместо второго setTimeout
:
function view_mail_popup_close()
{
setTimeout(function () {
$('#popupbox').fadeOut('slow', function() {
window.location='view_mail.php';
});
}, 200);
}
Живой пример