我有一个 xPage,在其上添加了一个按钮。在此按钮上,单击时会执行一些服务器端脚本。
我想要的是每当用户单击菜单中的链接时,都会执行此代码。因此,我在链接元素上创建了以下代码。
<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>
sendRedirectSignal 的代码如下
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());
}
}
如您所见,代码使用 dojo 检索按钮并发出 click 事件。由于某种原因,这根本行不通。没有在按钮上执行事件处理程序。当我在 firebug 中执行 btn 时,代码正在完美执行。有人可以帮助解决这个问题吗?为什么代码没有执行,我怎样才能让它工作。