Javascript 执行btn.click()

Javascript 执行btn.click(),javascript,xpages,Javascript,Xpages,我有一个xPage,上面添加了一个按钮。单击此按钮时,会执行一些服务器端脚本 我想要的是,每当用户单击菜单中的链接时,就会执行此代码。因此,我在link元素上创建了以下代码 <xp:link loaded="true" escape="true" id="lnkTab" value="#{javascript:rootNode.getFrame();}"> <xp:this.text><![CDATA

我有一个xPage,上面添加了一个按钮。单击此按钮时,会执行一些服务器端脚本

我想要的是,每当用户单击菜单中的链接时,就会执行此代码。因此,我在link元素上创建了以下代码

 <xp:link loaded="true" escape="true" id="lnkTab"
                value="#{javascript:rootNode.getFrame();}">
                <xp:this.text><![CDATA[#{javascript://return rootNode.getLabel();
return rootNode.getLabel();}]]></xp:this.text>
                <xp:eventHandler event="onclick" submit="true"
                    refreshMode="complete">
                    <xp:this.action><![CDATA[#{javascript:sessionScope.selectedPage = rootNode;}]]></xp:this.action>
                    <xp:this.script><![CDATA[
var currentPage = "#{javascript: return this.getParent().getValue();}";
var currentPageLocation = window.location.href;
var lastSlash = currentPageLocation.lastIndexOf("/");

var page = currentPageLocation.substring(lastSlash+1,currentPageLocation.length);
if(page == "UserProfile.xsp" && currentPage != "UserProfile.xsp"){
    if(isProfileChanged()){
        debugger;
        var retValue = confirm("U heeft wijzigingen niet opgeslagen.\nWilt u deze alsnog opslaan?");
        if(retValue){
            sendRedirectSignal("#{javascript: rootNode.getFrame();}","#{id:txtRedirectSignal}","#{id:btnProfileSave}");
            thisEvent.preventDefault();
            thisEvent.stopPropagation();        

            sendRedirectSignal("#{javascript: rootNode.getFrame();}","#{id:txtRedirectSignal}","#{id:btnProfileSave}");
            return false;

    }
}}]]></xp:this.script>

                </xp:eventHandler>
            </xp:link>

如您所见,代码使用dojo检索按钮并发出click事件。出于某种原因,这根本不起作用。没有对按钮执行任何事件处理程序。当我在firebug中执行btn时,代码执行得非常完美。有人能在这个问题上帮忙吗?为什么代码没有执行,我如何才能让它工作。

这是我对以下问题的回答的重复:

跟我重复:客户端始终优先于服务器端:-)

xp:link控件的value属性导致根本不执行服务器端事件。当点击链接时,它只是执行一个HTTP访问相关资源


因此,如果删除value属性,则应触发onclick服务器端事件。

这是我对以下问题的回答的重复:

跟我重复:客户端始终优先于服务器端:-)

xp:link控件的value属性导致根本不执行服务器端事件。当点击链接时,它只是执行一个HTTP访问相关资源


因此,如果删除value属性,则应触发onclick服务器端事件。

您可以简化此操作。为什么要把代码放在一个按钮中,让代码在一个链接中点击那个按钮?两个行动方针:

  • 移除按钮(如果您不需要它),并将代码放入链接中
  • 如果您也需要按钮:将按钮中的代码移动到SSJS函数中,并从链接和按钮调用该函数。xp:link也可以执行SSJS

    • 你可以简化它。为什么要把代码放在一个按钮中,让代码在一个链接中点击那个按钮?两个行动方针:

      • 移除按钮(如果您不需要它),并将代码放入链接中
      • 如果您也需要按钮:将按钮中的代码移动到SSJS函数中,并从链接和按钮调用该函数。xp:link也可以执行SSJS

      问题在于按钮和链接实际上位于不同的自定义控件中。带有按钮的控件以数据源为特征。为了能够移动代码,我还必须将数据源移动到更高的级别。这当然是一种更好的方法,但很明显,在quick消失后,我并没有花很长时间:-)当我在JS中看到bln.click()时,我总是感到害怕。问题是按钮和链接实际上位于不同的自定义控件中。带有按钮的控件以数据源为特征。为了能够移动代码,我还必须将数据源移动到更高的级别。这当然是一个更好的方法,但很明显,在quick消失后,我并没有花太多时间:-)当我在JS中看到bln.click()时,我总是畏缩不前。
      function sendRedirectSignal(strPage,redirectId,btnId){
          var hidRedirect = dojo.byId(redirectId)
          var btnProfile = dojo.byId(btnId);
          if(hidRedirect!=null && btnProfile != null){
              console.log(btnProfile);
              hidRedirect.value = strPage;
              console.log(btnProfile.click());
          }
      
      }