Primefaces:自动完成面板通常不会在IE中显示

时间:2013-01-31 15:19:21

标签: javascript internet-explorer autocomplete primefaces frame

我们的 PrimeFaces 3.4 应用程序在 firefox 下进行测试之前一直运行良好。然而,在进行测试后,出现了问题:

  • 应用程序将仅在IE中启动(IE 9)
  • 应用程序在框架集
  • 内启动

我们在许多地方使用p:autocomplete,其中包括对话框。在以下情况下点击后,通常不会显示这些自动填充的面板:

  • 在框架集内运行(在正常模式下很少发生)
  • IE开发人员工具已关闭(在打开它们时很少发生,使得错误难以调试)
  • 浏览器窗口未最大化

最后一件事是我们观察的关键。解决方案是最大化浏览器(因为我们有大屏幕可以工作)或缩小内容。因此,我怀疑这是计算必须显示自动完成面板的位置的问题。算法必须考虑几个条件,例如父母是否被定位(对话框:位置固定),如果有滚动,whan是偏移 - 这里的框架可能会弄乱一些东西。

然而,调试几乎不是一个选择,首先是因为没有官方的非最小化primefaces.js,第二,因为打开IE开发人员工具以某种方式阻止错误发生。

在这种情况下,我问自动完成如何以这种方式运行,以及它如何受到这个难题的任何元素的影响:框架集,对话框,IE开发工具?

1 个答案:

答案 0 :(得分:0)

与:IE8 and Primefaces p:selectOneMenu misbehave when having a lots of p:selectOneMenu in a form

相关

问题是 PrimeFaces 依靠visibility:hidden进行大量维度计算。当隐形组件超出页面边界时,IE不会按预期计算尺寸。我没有详细介绍PrimeFaces渲染引擎,但只需激活始终滚动即可解决问题:

body { overflow-y:scroll; }

这回答了为什么在使用框架集时经常看到问题的原因(较少的地方)或者为什么最大化浏览器有帮助。