IE10在计算机被locking时JavaScript不能重画窗口?

问题

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

我写了一些JavaScript代码,在20分钟的不活动之后,将浏览器redirect到另一个URL,以指示用户已经注销。 通常这工作正常。 不过,我已经注意到一个奇怪的情况….如果用户的Windows计算机在此超时期间被locking ,那么它似乎没有发生任何事情。

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

在这一点上…如果我快速的鼠标在页面上点击,然后浏览器“醒来”,并显示新的内容。 (看起来只有一个鼠标点击是不够的,点击的速度越快,“唤醒”的速度就越快)。

理论

我最好的猜测是IE10浏览器停止在电脑locking的时候重画窗口。 不过, 我确实相信JavaScript引擎仍在运行 ,因为我以不同的时间间隔用多个JS新的Date()时间戳testing了另一个场景,当屏幕最终重新绘制时,每个date时间都是唯一的,显示实际发生的时间。

重新创build问题 – 版本1

  1. 在IE10中启动下面的JavaScript代码
  2. 在10秒钟之前locking我的Windows电脑。
  3. 等待10秒钟,然后解锁我的电脑。
  4. 看到IE10窗口未能重绘

我注意到,只有在redirect到公司本地Intranet上的URL时才会出现这种情况。 我不知道为什么这是这种情况….但如果我有谷歌或雅虎的主页的URL ….那么我不能重新创build这个问题。 它只是正常工作。 让我怀疑这是否可能是一个组策略/可信区/内联网vs互联网问题的某种…

<!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> 

有没有人有任何想法如何解决这个问题,以便IE10窗口将始终重新立即,而不是显示陈旧的内容?

Solutions Collecting From Web of "IE10在计算机被locking时JavaScript不能重画窗口?"

终于找到了克服这种荒谬烦恼的办法。 我添加了一些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> 

我做了一些事情,比如只设置DIV的可见性使其隐藏(而不是设置白色背景和白色文本颜色),但浏览器不会重新绘制。 这是非常聪明的检测是否真的发生了可见的变化。

奖金 – 雅虎/ Google与我的注销页面

当重定向到雅虎或Google等外部网站时,我无法创建该问题的原因是,他们可能运行了一些JavaScript代码,确实会在加载后更新其页面内容。 他们本质上有更多的“东西”正在进行。 而我的原始注销页面非常简单,没有任何JavaScript代码在页面加载执行。

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