如何使用javascript在adf中保持页面滚动位置?
我在如何使用javascript在adf中保持页面滚动位置?,javascript,java,oracle-adf,Javascript,Java,Oracle Adf,我在adf(12.2)中有一个弹出窗口,用于编辑af:table行, 当我在adf弹出窗口上单击ok时,它会将页面滚动到顶部 这是不希望出现的行为,我希望保持相同的滚动位置 我尝试将af:clientListner与javascript代码一起使用,但没有成功 这是我的代码: <af:resource type="javascript"> var scrlTop =0; var scrlLeft=0; console.log("inside soohoo ")
adf(12.2)
中有一个弹出窗口,用于编辑af:table
行,
当我在adf
弹出窗口上单击ok时,它会将页面滚动到顶部
这是不希望出现的行为,我希望保持相同的滚动位置
我尝试将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>
var-scrlTop=0;
var-scrlLeft=0;
控制台日志(“内部soohoo”);
安慰
函数stopAutoScrollToTop(数据)
{
如果(数据状态==“开始”)
{
控制台日志(“soho 1”)
scrlTop=window.pageYOffset;
scrlLeft=window.pageXOffset;
}
else if(data.status==“成功”){
控制台日志(“SOHO2”)
window.scrollTo(scrlLeft,scrlTop);}
这是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不需要指定ADF弹出窗口在DOM上的打开位置 当您需要在元素上方打开弹出窗口而不是滚动到顶部时,请在触发弹出窗口的af:ShowPopupUpbeHavior组件中指定Align和AlignId属性:
<af:showPopupBehavior popupId="::popup" align="startBefore" alignId="YOUR_COMPONENT_ID_WHERE_THE_POPUP_SHOULD_OPEN"/>
在所有ADF版本中都是这样做的。当我在弹出窗口上单击“确定”时,而不是打开弹出窗口时,会发生此行为。您是否仍在尝试此解决方案?它会在浏览器范围外打开弹出窗口,我需要缩小窗口以便可以看到它。此解决方案不起作用,只是意味着您没有为您的用例设置正确的ID和Align属性;)