1

我有 JSF / Richfaces 网络应用程序。此应用程序最初是为IE6 浏览器设计的。现在我们也必须将它移植到IE-8。应用服务器是 Weblogic 10.3。我尝试了以下解决方案。

  1. 添加 Header 参数的过滤器,X-UA-Compatible。
  2. JSF PhaseListener 添加标头参数,X-UA-Compatible。
  3. 在页面头部的第一行添加了 Meta 标签。

以上都不起作用。此外,我无法使用任何自定义标头值。HttpRequestWrapper 也不能正常工作。

请提出解决方案。我一直希望我可以在 JSF 中使用 scriptlet 或在 JSF 中的任何地方使用逻辑标记。

4

2 回答 2

0

IE8 中的X-UA-Compatible选项只能作为 IE7 兼容性的后备选项。它没有模拟 IE6 的选项。

正因为如此,您所处的情况——拥有一个为 IE6 编写但在 IE8 中无法运行的 Intranet 应用程序——是公司长期坚持使用 IE6 的主要原因之一:这可能非常困难升级。

当然,理想的解决方案是更新站点中的代码,使其在 IE8(或者更好的是 IE9)中工作。这可能是一个漫长而昂贵的过程,但没有官方的捷径解决方案。

如果你不能更新你的网站,你将不得不坚持使用 IE6。但是有一些解决方案可能会减轻这种痛苦。

显而易见的快速修复答案是将您的主要平台升级到 IE8 或 IE9,但继续运行 IE6,保留在虚拟机中,并将其仅用于需要它的特定站点。还有IETester的超便宜选项,它是一个可以在同一台机器上运行多个版本的IE(包括IE6)的应用程序。然而,众所周知,IETester 经常崩溃,因此可能不是一个理想的解决方案。它适用于在各种 IE 版本中测试网站,但不适用于实际完成有用的工作。

这些充其量只是权宜之计,但可以让您保持运行,同时允许您升级其余的基础架构。

一个更强大的答案可能会以Browsium的形式出现。这是由一些前微软工程师推出的产品,旨在帮助旧的 IE6 特定站点在新版本的 Explorer 中工作。另请参阅这篇文章,了解他们可以做什么的一个很好的真实示例。

从长远来看,您最终将不得不更新您的网站;IE6 不能永远持续下去,即使是像 Browsium 这样的解决方案。但是这些解决方案可以让你避免在短期内做出改变。

如果您现在进行升级,我强烈建议您跳过 IE8 并尽可能直接升级到 IE9。IE8 已经过时,并且在其支持结束时会导致与 IE6 类似的升级问题(尽管可能没有那么糟糕)。

于 2012-04-10T18:10:11.533 回答
0

对于 IE 8 9 中的 Hide CompitibilityView Button 在 Jsf 中,您只需将此代码放在 PhaseListner 实现的类中

@Override public void beforePhase(PhaseEvent event) { response.addHeader("X-UA-Compatible", "IE=edge"); } 只需在已实现的 PhaseListner 类中添加此行

于 2012-06-19T08:09:19.683 回答