GWT应用程序第一次没有在IE中加载,但刷新后加载正常

时间:2014-05-07 07:51:41

标签: internet-explorer gwt

我有一个使用GWT 2.4.0构建的应用程序。前段时间出现了一个问题,对于某些Internet Explorer用户来说,第一次没有正确加载应用程序(仅显示静态内容)。但是,使用刷新(F5)后,应用程序会正常重新加载并在此之后正常工作。

关于这个问题的一些注意事项:

  • 此问题在Firefox中不存在;
  • 此问题仅适用于特定用户,而不适用于所有用户。即使在同一个桌面上,如果其他用户登录,该应用程序也可以在IE中正常运行。我们还尝试将具有此问题的用户登录到另一个桌面 - 在另一个桌面上没有问题;
  • 在开发机器上从未发现过这个问题 - 仅限少数测试人员和一些业务用户;
  • 对于那些观察到这个问题的用户,它发生在100%的时间(没有例外),因为大约4个月前;
  • 当尝试使用IE的开发工具捕获网络请求时,它显示始终请求某个* .cache.html文件,但永远不会找到(HTTP 404)。那个文件 在编译的应用程序中不存在,因此不清楚为什么要求它。在刷新时,不请求此文件,因此不会发生404错误。;
  • IE9的开发工具显示Browser Mode: IE9 Compat ViewDocument Mode: IE7 standards

可能是什么问题?我怎样才能准确找出并解决问题的原因?

2 个答案:

答案 0 :(得分:0)

您可以尝试修改History.gwt.xml,并删除:

<!-- IE6 has a completely different history implementation. IE8 used the -->
<!-- standard implementation. -->
<replace-with class="com.google.gwt.user.client.impl.HistoryImplIE6">
  <when-type-is class="com.google.gwt.user.client.impl.HistoryImpl"/>
  <when-property-is name="user.agent" value="ie6"/>
</replace-with>

如果将此修改后的文件及其命名空间添加到项目中,它应该获得正确的历史记录实现。

我不明白为什么如果你在IE8和IE9中,你的项目会选择HistoryImplIE6

答案 1 :(得分:0)

最后,Internet Explorer的缓存似乎存在一些问题。它似乎保留了收藏夹中的网站的一些缓存。实际上有两个解决方案:

a)对于用户,修复方法是从收藏夹中删除链接,然后重新添加链接。

b)在代码中,我们向index.jsp添加了以下标记,以强制IE9进入IE9文档模式,如this question所示: <meta http-equiv="X-UA-Compatible" content="IE=9">

这些解决方案是独立的,可以一次使用一个,也可以同时使用。