如何使用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属性;)