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

Javascript Primefaces:自动完成面板通常不显示在IE中,javascript,internet-explorer,autocomplete,primefaces,frame,Javascript,Internet Explorer,Autocomplete,Primefaces,Frame,我们有PrimeFaces 3.4应用程序,它在firefox下测试之前工作得非常好。但是,经过测试,出现了以下问题: 应用程序将仅在IE中启动(IE 9) 应用程序在框架集中启动 我们在很多地方使用了p:autocomplete,包括对话框。在以下情况下,单击后通常不会显示这些自动完成的面板: 在框架集内运行(在正常模式下很少发生) IE开发者工具是关闭的(当它们打开时很少发生,使得bug很难调试) 浏览器窗口未最大化 最后一件事是我们观察到的关键。解决方案是要么最大化浏览器(这可以工

我们有PrimeFaces 3.4应用程序,它在firefox下测试之前工作得非常好。但是,经过测试,出现了以下问题:

  • 应用程序将仅在IE中启动(IE 9)
  • 应用程序在框架集中启动
我们在很多地方使用了
p:autocomplete
,包括对话框。在以下情况下,单击后通常不会显示这些自动完成的面板:

  • 在框架集内运行(在正常模式下很少发生)
  • IE开发者工具是关闭的(当它们打开时很少发生,使得bug很难调试)
  • 浏览器窗口未最大化
最后一件事是我们观察到的关键。解决方案是要么最大化浏览器(这可以工作,因为我们有大屏幕),要么缩小内容。因此,我怀疑这是计算自动完成面板必须显示的位置的问题。算法必须考虑几个条件,例如父对象是否已定位(对话框:position fixed),是否存在滚动,偏移量是多少-在这里,帧可能会搞乱一些事情

然而,调试几乎不是一个选项,首先是因为没有官方的非最小化primefaces.js,其次是因为打开IE开发者工具某种程度上阻止了错误的发生

在这种情况下,我会问autocomplete如何表现出这样的行为,以及它如何受到谜题的任何元素的影响:框架集、对话框、IE开发工具?

与以下相关:

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

body { overflow-y:scroll; }

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

您对开发人员工具的评价表明,代码中有一些零散的
console.log()
调用。当开发人员控制台未打开时,这些可能会导致问题。但控制台的情况并非如此,而且不管怎样,没有ie开发工具的屏幕最大化在“对抗”错误方面更有效