Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在RichFaces 4.x中移动弹出窗口后,弹出阴影位置不正确_Javascript_Jsf 2_Richfaces - Fatal编程技术网

Javascript 在RichFaces 4.x中移动弹出窗口后,弹出阴影位置不正确

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

我有自动调整属性的弹出窗口。面板包含用于搜索、搜索按钮、datatable和datascroller的字段。按下搜索按钮或选择页面后,调用datascroller javascript。Javascript用于将弹出窗口移动到浏览器可见区域的中心。所有工作正常,但当弹出窗口已经移动时,弹出窗口阴影将停留在上一个面板位置

按钮代码:

<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个月前就解决了。谢谢你的解决方案。