我彈出了自動化屬性。面板包含搜索,搜索按鈕,datatable和datascroller字段。在按下搜索按鈕或在datascroller中選擇頁面javascript被調用。 Javascript用於將瀏覽器可見區域的中心移動到彈出窗口。所有工作正常,除彈出陰影留在彈出已移動前面板位置。在RichFaces 4.x中移動彈出窗口後彈出陰影位置不正確
按鈕代碼:
<a4j:commandButton id="searchButton"
value="#{msg.search}"
action="#{chAction.searchSegments}"
styleClass="richButton"
render="clientCategoryCandidateTable"
oncomplete="centerPanel();" />
的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));
};
我嘗試了多種不同版本的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));
};
屏幕截圖:
感謝您的任何幫助或意見。
您的回答部分正確。你的方法可以很好地處理陰影,但它不允許更改彈出窗口寬度。因爲數據表中的結果數據不是以1行(預期結果)顯示,而是以多行(名稱,類型,說明)顯示。我的版本不僅調整窗口大小,而且調整大小適當的數據。 –
我試着用數據表中的多行。它適當調整大小。在數據表中,我沒有在列中添加樣式。 –
我有相反的情況:彈出包含datatable與分頁,datatable沒有嚴格的列寬,在第一頁我有短名稱的行,在第二頁有些行有長名稱。在下一頁點擊'centerPanel'後,javascript被調用並且彈出窗口被重新居中。直到你的代碼工作。但我想在1行顯示所有數據(如果需要,調整數據表的大小)。這部分不包含您的代碼。數據顯示爲多行。也許它可以通過添加列寬或數據的無包裝樣式來解決。問題在5個月前解決了。感謝您的解決方案。 –