Javascript-код 'window.location' не работает! - PullRequest
0 голосов
/ 22 февраля 2011

Я пытаюсь этот код ---

function view_mail_popup_close()
{
     setTimeout("function () { $('#popupbox').fadeOut('slow'); }",200);
     setTimeout("function () { window.location='view_mail.php' }",800);
}

Я хочу выполнить его по ссылке!Но работает только функция затухания!

Может кто-нибудь сказать мне, почему не работает моя функция перенаправления!

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 22 февраля 2011

Я немного удивлен, что любой из них работает, потому что вы даете 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);
}

Живой пример

2 голосов
/ 22 февраля 2011

Вы не должны помещать "function () {}" в кавычки - если вы используете кавычки, тогда поместите код JS прямо туда.То, что вы делаете, синтаксически неверно:

Uncaught SyntaxError: Неожиданный токен (

Просто уничтожьте кавычки и литералы функции фида. Вы можете вкладывать их как таковые:

function view_mail_popup_close()
{
     setTimeout(function () { 
       $('#popupbox').fadeOut('slow'); 
       setTimeout(function () { window.location.href='view_mail.php' },600);
    },200);
}

Если вы используете кавычки, он работает медленнее, потому что выполняет дополнительную оценку, и область не сохраняется, поскольку она определена в глобальной области, кроме того, вы должны иметь там код DIRECT JS.

Если это по-прежнему не приводит к перенаправлению страницы на view_mail.php, пожалуйста, сообщите нам конкретно, что именно происходит. Если он перенаправляет на страницу 404 / пустую, то вам может потребоваться указать относительный корень, например, href="/view-mail.php"с ведущим /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...