1

我在下面有一个导航药丸示例,其中我有一个导航药丸,并且活动选项卡根据所选选项卡进行切换,并且效果很好。但是,该链接会将浏览器发送到另一个页面。我想将活性药丸设置为与离开时相同的药丸。我设置了 sessionScope.ssSelectedPill = 选择的链接 ID,这样当我返回时,我就知道在我离开之前处于活动状态的药丸。

我不知道如何在回来的路上设置活性药丸。任何帮助表示赞赏,希望能够使用 SSJS 或 CSJS 而不是 jQuery 来完成。

这是源的样子:

<xp:panel id="panelPills">
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-10 col-sm-4">
                <ul class="nav nav-pills">

                    <li role="presentation" class="active">

                        <xp:link id="myActions" text="My Actions">
                            <xp:this.attrs>
                                <xp:attr name="data-toggle" value="tab">
                                </xp:attr>
                            </xp:this.attrs>
                            <xp:eventHandler event="onclick"
                                submit="true" refreshMode="partial"
                                refreshId="dynamicContentMainView">
                                <xp:this.action><![CDATA[#{javascript:sessionScope.ssSelectedPill = "myActions"
}]]></xp:this.action>
                            </xp:eventHandler>
                        </xp:link>
                    </li>
                    <li role="presentation">
                        <xp:link id="requests" text="Requests">
                            <xp:this.attrs>
                                <xp:attr name="data-toggle" value="tab">
                                </xp:attr>
                            </xp:this.attrs>
                            <xp:eventHandler event="onclick"
                                submit="true" refreshMode="partial"
                                refreshId="dynamicContentMainView">
                                <xp:this.action><![CDATA[#{javascript:sessionScope.ssSelectedPill = "requests";
}]]></xp:this.action>
                            </xp:eventHandler>
                        </xp:link>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</xp:panel>
4

1 回答 1

1

将此“onClientLoad”事件处理程序添加到您的 XPage

   <xp:eventHandler
      event="onClientLoad"
      submit="false">
      <xp:this.script><![CDATA[
         var selectedPillId = "#{javascript:getClientId(sessionScope.ssSelectedPill ? sessionScope.ssSelectedPill : 'myActions')}"
         document.getElementById(selectedPillId).parentNode.className = "active"]]></xp:this.script>
   </xp:eventHandler>

class="active"<li>XPage 中的标签中删除。

class="active"加载 Xpage 时,此代码将添加到最后选择的选项卡。
如果第一次打开 XPage(未设置 sessionScope.ssSelectedPill),则“myActions”将设置为活动状态。

这样,在再次重新加载 XPage 后,最后选择的选项卡处于活动状态。

于 2015-07-29T05:55:21.970 回答