Javascript setTimeout 和重定向 - IE 冻结

2024-01-12

我的页面上有一个脚本用于处理会话超时,当会话到期时在客户端重定向用户。完整的代码有点复杂,但我已经将代码精简到导致问题的原因:

<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(使用前将#替换为@)

Javascript setTimeout 和重定向 - IE 冻结 的相关文章

随机推荐

  • 在 gnuplot 5 中捕获超文本值

    我确实喜欢 gnuplot 5 中新的超文本功能 但我仍然缺少一些东西 我不仅希望悬停在某个点附近来阅读一些隐藏的文本 而且我还希望能够捕获超文本 如果这个超文本是一个鼠标变量 就像 MOUSE X 和 MOUSE Y 一样 捕获它将是一个
  • 在 Scala 中获取随机元素的有效方法?

    从 Scala 集合中获取随机元素的有效方法是什么 有一个相关的在这里提问 https stackoverflow com questions 5051574 how to choose a random element from an a
  • Google 应用引擎:按 ID 过滤

    我不知何故迷路了 我想做一些类似下面按 ID 过滤的事情 id 1000 query Customers all query filter ID id or query db GqlQuery select from Customers w
  • 如何安全地注销并清除所有订阅?

    我实现了自己的登录系统 因为我使用第三方 Web 服务根据企业身份验证系统对用户进行身份验证 因此 我构建了一个调用服务器方法的表单 以对身份验证系统进行 Web 服务调用 如果凭据有效 它会使用用户的 ID 设置会话变量 这就是我更改模板
  • 如何拥有自动递增的版本号(Visual Studio)? [复制]

    这个问题在这里已经有答案了 我想存储一组在构建时自动递增的整数 int MajorVersion 0 int MinorVersion 1 int Revision 92 当我编译时 它会自动递增Revision 当我构建安装项目时 它会增
  • 在 Objective-C 中合并 NSArray

    我有一个 NSDictionary 其中每个键都指向一个数组 我稍后想将所有值合并到一个数组中 有没有一种方法可以使用 API 做一些比说更有效的事情 NSArray anArray someDictionary allValues NSM
  • 更改 R DT 数据表中控件的颜色

    在 R 中 闪亮和数据表 DT 想要将控制文本的颜色更改为蓝色 因为它建议它可以在这里 https datatables net manual styling theme creator https datatables net manua
  • 如何为 Web 作业处理提供基于配置的队列名称?

    我有一个 webjob 应用程序来处理 ServiceBus 队列 它运行良好 使用以下方法 public static void ProcessQueueMessage ServiceBusTrigger myQueueName Brok
  • html5语义元素和旧浏览器

    我即将为网页设计一个新的布局 并想利用这一刻来实现一些 html5 标记 我首先想到的是语义元素 导航 标题 文章 检查后http caniuse com feat html5 语义 http caniuse com feat html5s
  • Terraform 错误“您的查询未返回结果”

    我有以下 bom asg tf 文件 data aws ami bom ami most recent true filter name tag ami name values var environment bom ami owners
  • 使用 Conda 和 Spyder 安装 OpenCV

    我在使用 Conda 安装 OpenCV 时遇到问题 我尝试运行许多命令 但没有一个起作用 例如 当我跑步时conda install c anaconda opencv 按照https anaconda org anaconda open
  • 如何将 MongoDB - 正在运行的 Docker 容器的数据保存在新映像中?

    我有一个正在运行的 Mongodb 容器 名为 xyz 来自官方 Mongo Image 我创建了容器docker run d p 21707 21707 mongo在此容器中 我创建了 2 个包含示例数据的集合 现在我想在 dockerh
  • Mule http:outbound-endpoint + multipart/form-data

    我正在尝试调用一个期望接收多部分 表单数据的休息服务 但我遇到了一些问题 经过一段时间的搜索 我了解到我必须将有效负载移动到出站附件并将有效负载设置为空
  • 假设 DayOfWeek 的数值是否安全?

    我将星期几存储在数据库中 其中星期日 1 星期一 2 等 在数据库查询中 我需要将日期转换为System DayOfWeek 根据MSDN http msdn microsoft com en us library system dayof
  • 使用 libgdx 进行触摸滚动

    我正在尝试在 libgdx 游戏中实现触摸滚动 我有一张宽图像 是房间的全景图 我希望能够滚动图像 以便用户可以看到房间周围的情况 我拥有它 这样我就可以滚动一定的距离 但是当注册新的 touchDragged 事件时 图像会移回到原始位置
  • ASP.NET MVC 资源文件的最佳实践

    以下资源文件的最佳用途是什么 属性 资源 Phil http haacked com archive 2009 12 07 localizing aspnetmvc validation aspx在 DataAnnotation 中使用此资
  • MIUM 8 红米手机后台服务被杀死如何重启

    我在用sticky service用于后台操作 即使应用程序处于运行状态 它在所有手机中也能正常工作closed通过从堆栈中滑动 然后服务重新启动 但在RedMi Note 3w当应用程序通过从堆栈滑动关闭时 service is not
  • 代理背后的 Google Drive API Java 客户端

    我正在尝试使用 Drive API 编写一个 java 客户端驱动器 API v2 https developers google com resources api libraries documentation drive v2 jav
  • 将 WPF 样式触发器绑定到自定义依赖项属性

    我在这里找到了许多类似的线程 但似乎没有一个能解决我的具体问题 我需要在某些条件下突出显示文本框的背景 我创建了一个突出显示属性 并尝试使用样式中的触发器来设置它 但它实际上并没有突出显示文本 这是我的风格 简化了
  • Javascript setTimeout 和重定向 - IE 冻结

    我的页面上有一个脚本用于处理会话超时 当会话到期时在客户端重定向用户 完整的代码有点复杂 但我已经将代码精简到导致问题的原因