如何使用 javascript 在 adf 中保持页面滚动位置?
how to keep page Scroll Postion in adf using javascript?
我在 adf (12.2)
中有弹出窗口,用于编辑 af:table
行,
当我在 adf
弹出窗口上单击确定时,它会将页面滚动到顶部
这是不受欢迎的行为,我想保持相同的滚动位置
我尝试将 af:clientListner 与 javascript 代码一起使用,但没有成功
这是我的代码:
<af:resource type="javascript">
var scrlTop =0;
var scrlLeft=0;
console.log("inside soohoo ");
console
function stopAutoScrollToTop(data)
{
if (data.status=="begin")
{
console.log("soho 1 ")
scrlTop = window.pageYOffset;
scrlLeft = window.pageXOffset;
}
else if (data.status =="success"){
console.log("soho 2 ")
window.scrollTo(scrlLeft,scrlTop);}}
</af:resource>
这是 adf 弹出窗口的代码
<af:popup childCreation="deferred" autoCancel="disabled" id="popup"
popupCanceledListener="#{pageFlowScope.bean.cancelpop}"
binding="#{pageFlowScope.bean.add}" contentDelivery="lazyUncached">
<af:dialog id="d2" type="none"
title="#{pageFlowScope.bean.isInsertPopup ? lang.add:lang.edit }" closeIconVisible="false"
modal="false">
<f:facet name="buttonBar">
<af:panelGroupLayout id="pgl2">
<af:button text="#{lang.OK_BUTTON}" id="b35" partialSubmit="true"
actionListener="#{pageFlowScope.bean.save}" styleClass="btn-black">
<af:clientListener type="action" method="stopAutoScrollToTop"/>
</af:button>
<af:button text="#{lang.CANCEL_BTN}" id="b6" immediate="true"
visible="#{pageFlowScope.bean.isInsertPopup}"
action="#{pageFlowScope.bean.CancelOutput}" styleClass="btn-black"/>
</af:panelGroupLayout>
</f:facet>
<af:panelFormLayout id="pfl3" rows="2" maxColumns="2" labelAlignment="top">
<af:inputText value="#{bindings.Name.inputValue}"
label="#{bindings.Name.hints.label}"
required="true"
showRequired="true" columns="#{bindings.Name.hints.displayWidth}"
maximumLength="#{bindings.Name.hints.precision}"
shortDesc="#{bindings.Name.hints.tooltip}" id="it3"
binding="#{pageFlowScope.Bean.Name}">
<f:validator binding="#{bindings.Name.validator}"/>
</af:inputText>
</af:panelFormLayout>
</af:dialog>
</af:popup>
javascript 无需指定 DOM ADF 弹出窗口应打开的位置。
当您需要弹出窗口在元素上方打开而不是滚动到顶部时,请在触发弹出窗口的 af:showPopupBehavior 组件中指定 Align 和 AlignId 属性:
<af:showPopupBehavior popupId="::popup" align="startBefore" alignId="YOUR_COMPONENT_ID_WHERE_THE_POPUP_SHOULD_OPEN"/>
这就是您在所有 ADF 版本中的操作方式。
我在 adf (12.2)
中有弹出窗口,用于编辑 af:table
行,
当我在 adf
弹出窗口上单击确定时,它会将页面滚动到顶部
这是不受欢迎的行为,我想保持相同的滚动位置
我尝试将 af:clientListner 与 javascript 代码一起使用,但没有成功
这是我的代码:
<af:resource type="javascript">
var scrlTop =0;
var scrlLeft=0;
console.log("inside soohoo ");
console
function stopAutoScrollToTop(data)
{
if (data.status=="begin")
{
console.log("soho 1 ")
scrlTop = window.pageYOffset;
scrlLeft = window.pageXOffset;
}
else if (data.status =="success"){
console.log("soho 2 ")
window.scrollTo(scrlLeft,scrlTop);}}
</af:resource>
这是 adf 弹出窗口的代码
<af:popup childCreation="deferred" autoCancel="disabled" id="popup"
popupCanceledListener="#{pageFlowScope.bean.cancelpop}"
binding="#{pageFlowScope.bean.add}" contentDelivery="lazyUncached">
<af:dialog id="d2" type="none"
title="#{pageFlowScope.bean.isInsertPopup ? lang.add:lang.edit }" closeIconVisible="false"
modal="false">
<f:facet name="buttonBar">
<af:panelGroupLayout id="pgl2">
<af:button text="#{lang.OK_BUTTON}" id="b35" partialSubmit="true"
actionListener="#{pageFlowScope.bean.save}" styleClass="btn-black">
<af:clientListener type="action" method="stopAutoScrollToTop"/>
</af:button>
<af:button text="#{lang.CANCEL_BTN}" id="b6" immediate="true"
visible="#{pageFlowScope.bean.isInsertPopup}"
action="#{pageFlowScope.bean.CancelOutput}" styleClass="btn-black"/>
</af:panelGroupLayout>
</f:facet>
<af:panelFormLayout id="pfl3" rows="2" maxColumns="2" labelAlignment="top">
<af:inputText value="#{bindings.Name.inputValue}"
label="#{bindings.Name.hints.label}"
required="true"
showRequired="true" columns="#{bindings.Name.hints.displayWidth}"
maximumLength="#{bindings.Name.hints.precision}"
shortDesc="#{bindings.Name.hints.tooltip}" id="it3"
binding="#{pageFlowScope.Bean.Name}">
<f:validator binding="#{bindings.Name.validator}"/>
</af:inputText>
</af:panelFormLayout>
</af:dialog>
</af:popup>
javascript 无需指定 DOM ADF 弹出窗口应打开的位置。
当您需要弹出窗口在元素上方打开而不是滚动到顶部时,请在触发弹出窗口的 af:showPopupBehavior 组件中指定 Align 和 AlignId 属性:
<af:showPopupBehavior popupId="::popup" align="startBefore" alignId="YOUR_COMPONENT_ID_WHERE_THE_POPUP_SHOULD_OPEN"/>
这就是您在所有 ADF 版本中的操作方式。