Javascript setTimeout и редирект - IE зависает
У меня есть скрипт на моей странице, который имеет дело с тайм-аутами сеанса, перенаправляя пользователя на стороне клиента, когда сеанс должен истечь. Полный код несколько сложнее, но я урезал код до того, что вызывает у меня проблему:
<head runat="server">
<script src="javascript/jquery-1.7.2.min.js" type="text/javascript">
</script>
<script type="text/javascript">
/*
Please see document ready method at the bottom that sets
up this code, calling CheckActivity() at intervals.
*/
var warningInterval, redirectTimeout;
var now = 1;
function TimeoutRedirect() {
window.location.href = "Test2.aspx";
}
//In this example this is a bit of a null op, but in real
//code this will display a warning a minute or so prior to redirect.
//This is required to recreate...
function CheckActivity() {
if (now > 4) {
clearInterval(warningInterval);
redirectTimeout = setTimeout(function () {
TimeoutRedirect(); }, 5000);
}
//Some visual activity for testing purposes.
$("#CheckActivityCount").text(now);
now++;
}
$(document).ready(function () {
warningInterval = setInterval(function () {
CheckActivity(); }, 1000);
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="CheckActivityCount">
</div>
</div>
</form>
</body>
Этот код работает, как и ожидалось, перенаправляя через (примерно) десять секунд. Однако, если после того, как интервальные вызовы CheckActivity завершены (через 5 секунд), я блокирую свой экран, а затем разблокирую его после того, как произошло перенаправление (еще 5 секунд), URL-адрес в моем окне IE перешел на & apos; test2.aspx & reg ;, но окно, кажется, замерзло (все еще показывая первую страницу).
Это в конечном итоге не останавливается, но для перехода к следующей странице требуется 10 секунд.
Кажется, что это происходит только в IE (IE9 на моей машине), и это хорошо в Chrome и Firefox (и, как ни странно, в IE6).
(Test2.aspx - это очень простая страница, содержащая только текст «success».)
Просто отметив, что если я изменю перенаправление с test.aspx наhttp://www.google.com/Это не кажется проблемой. Однако все равно не работает, если я изменю test2.aspx на абсолютный URL-адрес (единственное основное отличие состоит в том, что это будет адрес localhost).