我的页面上有一个脚本用于处理会话超时,当会话到期时在客户端重定向用户。完整的代码有点复杂,但我已经将代码精简到导致问题的原因:
<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 秒),则 IE 窗口中的 URL 已变为“test2” .aspx',但窗口似乎已冻结(仍显示第一页)。
这最终会解冻,但需要 10 秒才能到达下一页。
这似乎只发生在 IE 中(我的机器上是 IE9),并且在 chrome 和 firefox 中没问题(奇怪的是 IE6)。
(Test2.aspx 是一个非常简单的页面,仅包含文本“成功”。)
只是注意到,如果我将重定向从 test.aspx 更改为http://www.google.com/ http://www.google.com/,这似乎不是一个问题。但是,如果我将 test2.aspx 更改为绝对 URL(唯一的主要区别是这将是本地主机地址),仍然不起作用。
我遇到了同一类型的问题,所以我创建了一个不同的问题,这样我就可以专注于我认为问题的核心。 (当计算机处于锁定屏幕时,IE 不会重新绘制。)
无论如何,我finally找到了解决这个问题的方法。你可以看到我的回答在这里 https://stackoverflow.com/a/23398842/940783。本质上,您可以通过在自动注销目标页面中放置一些 JavaScript 来定期更新页面内容来解决您的问题......这将迫使 IE 重新绘制页面。
这样,我可以在当前页面上的会话到期之前执行我想要的任何自动保存逻辑,然后将它们踢到自动注销页面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)