当计算机被锁定时,IE10 JavaScript无法重新绘制窗口?

当计算机被锁定时,IE10 JavaScript无法重新绘制窗口?,javascript,windows,internet-explorer,internet-explorer-10,repaint,Javascript,Windows,Internet Explorer,Internet Explorer 10,Repaint,问题 发生在IE10上。(IE8工作正常。) 我已经编写了一些JavaScript代码,在不活动20分钟后,它会将浏览器重定向到另一个URL,以指示用户已注销。通常情况下,这很好。然而,我注意到一个奇怪的情况。。。。如果用户的Windows计算机在此超时期间被锁定,则显示为未发生任何事情 但是,当我查看浏览器的URL栏时,我可以清楚地看到URL已经更新到自动注销页面。但是浏览器窗口的全部内容仍然显示旧页面!!!!由于某些原因,浏览器窗口未重新绘制/刷新。它看起来像是被冻住了 在这一点上。。。如果

问题

发生在IE10上。(IE8工作正常。)

我已经编写了一些JavaScript代码,在不活动20分钟后,它会将浏览器重定向到另一个URL,以指示用户已注销。通常情况下,这很好。然而,我注意到一个奇怪的情况。。。。如果用户的Windows计算机在此超时期间被锁定,则显示为未发生任何事情

但是,当我查看浏览器的URL栏时,我可以清楚地看到URL已经更新到自动注销页面。但是浏览器窗口的全部内容仍然显示旧页面!!!!由于某些原因,浏览器窗口未重新绘制/刷新。它看起来像是被冻住了

在这一点上。。。如果我在页面上快速鼠标点击,浏览器就会“唤醒”并显示新内容。(似乎仅仅点击一次鼠标是不够的。你点击的速度越快,它“醒来”的速度就越快。)

理论

我的猜测是IE10浏览器在计算机锁定时停止重新绘制窗口。然而,我确实相信JavaScript引擎仍然在运行,因为我测试了另一个场景,在不同的时间间隔有多个JS new Date()时间戳,当屏幕最终重新绘制时,每个日期时间都是唯一的,显示了它实际发生的时间

重新创建问题-版本1

  • 在IE10中启动下面的JavaScript代码
  • 在10秒之前锁定我的Windows计算机
  • 等待10秒钟,然后解锁我的计算机
  • 请参阅IE10窗口无法重新绘制
  • 我注意到只有在重定向到我们公司本地内部网上的URL时才会发生这种情况。我不知道为什么会这样。。。。但如果我把URL作为谷歌或雅虎的主页。。。。那我就不能再制造这个问题了。它只是正常工作。让我想知道这是否可能是一个集团政策/受信任区域/内部网与某种互联网问题

    <!DOCTYPE HTML>
    <html>
    <head></head>
    <body>    
    <script>
        var url = 'http://IntranetWebApps.OurCompany.com/MyWebApp/Home';  // fails
        //url = 'http://www.yahoo.com';  // this 'Internet' site works
        //url = 'http://www.google.com';  // this 'Internet' site works 
    
        setTimeout(function () { 
                window.location.href = url;
            }, 10000  // wait 10 seconds, then execute redirect
        );
    </script>
    </body>
    </html>
    
    
    var url='1〕http://IntranetWebApps.OurCompany.com/MyWebApp/Home';  // 失败
    //url='1〕http://www.yahoo.com';  // 这个“互联网”网站有效
    //url='1〕http://www.google.com';  // 这个“互联网”网站有效
    setTimeout(函数(){
    window.location.href=url;
    },10000//等待10秒,然后执行重定向
    );
    
    问题


    有没有人知道如何解决这个问题,以便IE10窗口总是立即重新绘制,而不是显示过时的内容?

    我怀疑这可能是特定于一组特定的图形卡或驱动程序。从IE菜单栏中,选择Internet选项。在“高级”选项卡上,选择“使用软件渲染”选项。然后重新启动


    终于找到了克服这种荒谬烦恼的方法。我在我的自动注销登录页面中添加了一些JavaScript(在那里我重定向了用户)。此JavaScript每秒钟更新一次页面内容

    这里真正的问题是,即使IE10窗口内容被合法地更新,并且应该在计算机被锁定时重新绘制(例如发生重定向时)。。。。。它不会重新上漆

    IE10仅在计算机解锁时发生页面内容更新操作时重新绘制。

    下面的JavaScript通过将DIV的内容设置为当前时间(包括秒),每秒钟更新一次页面内容。这意味着,如果用户锁定了计算机并吃了一个小时的午餐,他们的浏览器页面将超时,并在他们离开时重定向到注销页面。当用户返回并解锁其计算机时。。。他们将在1秒内看到陈旧的内容。。。。然后运行的JavaScript强制重新绘制,他们将很快看到注销屏幕的内容

    <h1>Due to inactivity, you were automatically logged out.  (Deal with it.)</h1>
    <div id="div1" style="background-color: white; color: white;">
    </div>
    <script>
        (function ()
        {
            var forceRepaint = function ()
            {
                var myDiv = document.getElementById("div1");
                myDiv.innerHTML = new Date().toLocaleTimeString();
            };
            setInterval(forceRepaint, 1000);
        })();
    </script>
    
    由于不活动,您已自动注销。(处理好它。)
    (功能()
    {
    var forceRepaint=函数()
    {
    var myDiv=document.getElementById(“div1”);
    myDiv.innerHTML=新日期().toLocaleTimeString();
    };
    设置间隔(强制重新绘制,1000);
    })();
    
    我尝试过一些方法,比如只在DIV上设置可见性使其隐藏(而不是设置白色背景和白色文本颜色),但浏览器不会重新绘制。检测是否真的发生了可见的变化是非常明智的

    奖金——雅虎/谷歌对我的注销页面


    我之所以无法在重定向到雅虎或谷歌等外部网站时引发问题,是因为它们可能运行了一些JavaScript代码,这些代码在加载页面后确实会更新页面内容。他们基本上有更多的“东西”在进行。然而,我最初的注销页面非常简单,页面加载时没有执行任何JavaScript代码。

    是的,我看到了这个问题:但是,我正在将这个问题扩展到一个更大的问题。它甚至与JavaScript重定向没有特别的关系。。。。尽管这是一种重现问题的方法。作为一种想法,如果您在这里没有得到任何帮助,您可能希望在代码审查中重新发布您写得非常好的问题。谢谢!你的想法确实解决了我描述的问题。我很惊讶你居然知道我的问题与软件和硬件渲染有关。不幸的是,我无法将此作为解决方案,因为我无法对每个用户的计算机进行设置更改。但我还是很高兴你能揭示问题的根源。我今天想出了一个解决方案,只需要将JavaScript添加到自动注销登录页,所以我将此作为答案发布。很好的解决方案,我给了你一个+1!注意:此脚本连续显示时间,对于那些想在一段时间后停止的人-请参见Aft