Internet Explorer 8 - перенаправить setTimout на другую страницу - PullRequest
0 голосов
/ 20 мая 2010

Я пытаюсь перенаправить пользователя на другую страницу через 1 секунду с помощью javascript:

setTimout("document.location.href='new_page.html'", 1000);

, однако в Internet Explorer это происходит немедленно, а не через 1 секунду.Есть мысли?

Ответы [ 2 ]

4 голосов
/ 20 мая 2010

То, что вы цитировали, должно работать, за исключением пары незначительных ошибок:

  1. Вам не хватает буквы "e" в setTimeout

  2. Вы используете document.location;это должно быть window.location.

Просто протестировал его на IE8, и он ждал, как и ожидалось.Вы делаете это из какого-то события, которое все равно заставит страницу перезагрузиться, например, событие submit формы?Если это так, вам нужно отменить отправку формы, чтобы она не заменяла код setTimeout.То, как вы это сделаете, будет зависеть от того, как вы перехватываете событие (например, если вы используете обработчик DOM0 onsubmit="...", используйте return false;; если вы используете что-то более современное, вам нужно event.preventDefault(); есливы используете jQuery, Prototype или какую-либо другую библиотеку, проверьте их документы на предмет правильного способа предотвращения действия события по умолчанию).

Теперь, хотя это работает так, как вы это сделали, обычно лучшесделать это с помощью функции, а не кода внутри строки, например:

setTimeout(function() {
    window.location.href = 'new_page.html';
}, 1000);

Но в любом случае должен работать.

0 голосов
/ 20 мая 2010

Оберните это в функцию.

setTimeout( function() { location.href = 'new_page.html'; }, 1000 );

Обратите внимание, что, если вы всегда делаете это при загрузке страницы, вам действительно следует использовать мета-тег обновления.

 <meta http-equiv="refresh" content="1;url=new_page.html">
...