Javascript 在RichFaces 4.x中移动弹出窗口后,弹出阴影位置不正确
我有自动调整属性的弹出窗口。面板包含用于搜索、搜索按钮、datatable和datascroller的字段。按下搜索按钮或选择页面后,调用datascroller javascript。Javascript用于将弹出窗口移动到浏览器可见区域的中心。所有工作正常,但当弹出窗口已经移动时,弹出窗口阴影将停留在上一个面板位置 按钮代码:Javascript 在RichFaces 4.x中移动弹出窗口后,弹出阴影位置不正确,javascript,jsf-2,richfaces,Javascript,Jsf 2,Richfaces,我有自动调整属性的弹出窗口。面板包含用于搜索、搜索按钮、datatable和datascroller的字段。按下搜索按钮或选择页面后,调用datascroller javascript。Javascript用于将弹出窗口移动到浏览器可见区域的中心。所有工作正常,但当弹出窗口已经移动时,弹出窗口阴影将停留在上一个面板位置 按钮代码: <a4j:commandButton id="searchButton" value="#{msg.search}" action="#{chA
<a4j:commandButton id="searchButton"
value="#{msg.search}"
action="#{chAction.searchSegments}"
styleClass="richButton"
render="clientCategoryCandidateTable"
oncomplete="centerPanel();" />
我尝试了不同版本的javascript,但有相同的副作用:
function centerPopup() {
var popup = #{rich:component('addToSegmentsPanel')};
popup.moveTo(Math.max(0, (window.innerWidth-popup.width())/2),
Math.max(0, (window.innerHeight-popup.height())/2));
};
屏幕截图:
感谢您的帮助或评论。问题已通过在javascript末尾添加隐藏和显示得到解决:
function centerPanel() {
var modalPanel = #{rich:component('addToSegmentsPanel')};
var windowWidth = document.documentElement.clientWidth;
var windowHeight = document.documentElement.clientHeight;
var popupWidth = modalPanel.width();
var popupHeight = modalPanel.height();
modalPanel.setLeft(Math.max(0, (windowWidth-popupWidth)/2));
modalPanel.setTop(Math.max(0, (windowHeight-popupHeight)/2));
};
modalPanel.hide(); modalPanel.show();
已修复在javascript末尾添加隐藏和显示的问题:
function centerPanel() {
var modalPanel = #{rich:component('addToSegmentsPanel')};
var windowWidth = document.documentElement.clientWidth;
var windowHeight = document.documentElement.clientHeight;
var popupWidth = modalPanel.width();
var popupHeight = modalPanel.height();
modalPanel.setLeft(Math.max(0, (windowWidth-popupWidth)/2));
modalPanel.setTop(Math.max(0, (windowHeight-popupHeight)/2));
};
modalPanel.hide(); modalPanel.show();
我解决了调用弹出窗口的resize()操作的问题。
在您的情况下,应该是
modalPanel.resize()
我解决了调用弹出窗口的resize()操作的问题。
在您的情况下,应该是
modalPanel.resize()
您的答案部分正确。您的方法可以很好地处理阴影,但它不允许更改弹出窗口的宽度。datatable中的结果数据不是以一行(预期结果)显示,而是以多行(名称、类型、说明)显示。我的版本不仅调整了窗口的大小,而且调整了数据表的大小。它可以正确调整大小。在datatable中,我并没有在列中设置样式。我有相反的情况:弹出窗口包含带有分页的datatable,datatable并没有严格的列宽,在第一页我有短名称的行,在第二页一些行有长名称。下一页后,单击中心面板
调用javascript,弹出窗口重新居中。在此之前,您的代码可以正常工作。但我想在一行中显示所有数据(如果需要,调整datatable的大小)。您的代码不包含此部分。数据显示为多行。也许可以通过为数据添加列宽或不使用换行样式来修复。这个问题在5个月前就解决了。谢谢你的解答。你的答案部分正确。您的方法可以很好地处理阴影,但它不允许更改弹出窗口的宽度。datatable中的结果数据不是以一行(预期结果)显示,而是以多行(名称、类型、说明)显示。我的版本不仅调整了窗口的大小,而且调整了数据表的大小。它可以正确调整大小。在datatable中,我并没有在列中设置样式。我有相反的情况:弹出窗口包含带有分页的datatable,datatable并没有严格的列宽,在第一页我有短名称的行,在第二页一些行有长名称。下一页后,单击中心面板
调用javascript,弹出窗口重新居中。在此之前,您的代码可以正常工作。但我想在一行中显示所有数据(如果需要,调整datatable的大小)。您的代码不包含此部分。数据显示为多行。也许可以通过为数据添加列宽或不使用换行样式来修复。这个问题在5个月前就解决了。谢谢你的解决方案。