如何使用 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 版本中的操作方式。