0

我们有PrimeFaces 3.4应用程序,它在firefox下测试之前运行良好。但是,在去测试之后,问题就出现了:

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

我们p:autocomplete在很多地方都在使用,包括对话框。在以下情况下,单击后通常不会显示这些自动完成的面板:

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

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

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

在这种情况下,我想问自动完成如何表现得如此,以及它如何受到拼图的任何元素的影响:框架集、对话框、IE 开发工具?

4

1 回答 1

0

相关:IE8 和 Primefaces p:selectOneMenu 在表单中有很多 p:selectOneMenu 时行为不端

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

body { overflow-y:scroll; }

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

于 2013-02-01T11:41:04.980 回答