对话框不以窗口高度为中心,而是以文档高度为中心



现在使用素数 6.2,我在使用 6.0 时已经遇到了这个问题,所以我认为是时候调查了。当页面(文档(的内容高度大于窗口(浏览器的视口(时,您可以清楚地看到对话框不是以窗口为中心,而是以文档为中心。当页面非常大时,对话框仍以页面级别为中心,而不是窗口级别。这意味着,如果页面高度至少是窗口的两倍,则对话框会落在窗口上。为了测试这一点,我制作了一个示例页面:

<html lang="nl" xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<h:form id="show">
<p:commandButton value="Test" onclick="PF('dialog').show();" />
</h:form>
<p:dialog id="dialog" header="dialog" widgetVar="dialog" modal="true" height="100">
<h:form id="refresh">
<p:button onclick="document.location.href = document.location.href;" value="Refresh" />
</h:form>
</p:dialog>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
<p>test</p>
</h:body>
</html>

在此示例页中,它将触发对话框。在大多数笔记本电脑上使用时,它会在中心很好地显示对话框,因为屏幕分辨率足够大。现在,调整浏览器屏幕的大小,直到出现滚动条。这意味着一些"测试"线应该从窗口上掉下来。现在再次触发对话框。就我而言,它不再居中。调整浏览器大小也没有效果...

奇怪的是,在Primefaces展示柜上进行测试并调整屏幕大小时,对话框始终居中!结论是有一些不同的东西,但我只对素数使用基本配置。我注意到,虽然所有内容都包装在主要站点的布局容器中。还尝试将所有内容包装在布局容器中,但没有帮助。

任何人都知道为什么会这样。这是我应该报告的错误吗?这是按照设计进行的,对话框将始终以文档为中心(出于某种奇怪的原因,展示不遵循此逻辑......

我找到了解决方案:需要添加一个文档类型声明:<!DOCTYPE html>.

尽管声明对于 XHTML5 文档不是强制性的;对于使用素数,它实际上是强制性的。否则,某些组件可能会出现意外行为,如此对话框所示。

更多信息: https://github.com/primefaces/primefaces/issues/4115

最新更新