Xpages 带有ssjs和csjs的按钮未在csjs中打开新窗口

Xpages 带有ssjs和csjs的按钮未在csjs中打开新窗口,xpages,Xpages,我有一个按钮,当点击,更新后端文件,然后打开一个新的窗口到另一个网站传递一些信息 它在Mozilla v27中运行良好,但在IE 10或11和Chrome中进行测试时,它不起作用。啊。有谁能建议一个更好的方法来处理这个问题,这样它就可以在所有浏览器中工作。 更新:所有代码 <?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://

我有一个按钮,当点击,更新后端文件,然后打开一个新的窗口到另一个网站传递一些信息

它在Mozilla v27中运行良好,但在IE 10或11和Chrome中进行测试时,它不起作用。啊。有谁能建议一个更好的方法来处理这个问题,这样它就可以在所有浏览器中工作。 更新:所有代码

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:this.resources>
<xp:script src="js/jquery-1.8.2.min.js" clientSide="true" />
<xp:script src="js/jquery-ui-1.9.min.js" clientSide="true" />
</xp:this.resources>
<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[
function linkToEstatementsSignup() 
{
var url = " https://ebppdemo.documentdna.com/lieberman/login.aspx?uid=#{javascript:userOccupantProfile.gettenant_id()}" +
"&fn=#{javascript:userOccupantProfile.getFirstName()}" +  
"&ln=#{javascript:userOccupantProfile.getLastName()}" +
"&em=#{javascript:userOccupantProfile.getEmail()}" +  
"&ph=#{javascript:userOccupantProfile.getDayPhone()}" +
"&acct=#{javascript:userOccupantProfile.getAccountNumber()}";

alert( url );

window.open( url );
}
]]>
</xp:this.value>
</xp:scriptBlock>

<xe:navigator id="navigator1">
<xe:this.treeNodes>
<xe:basicContainerNode label="Register for e-Statements"
submitValue="RegisterForEstatements" enabled="true">
<xe:this.rendered><![CDATA[#{javascript:myEStatements.renderStatements()}]]>
</xe:this.rendered>
</xe:basicContainerNode>
</xe:this.treeNodes>
<xp:eventHandler event="onItemClick" submit="true"
refreshMode="partial" refreshId="navigator1">
<xp:this.action><![CDATA[#{javascript:
if( context.getSubmittedValue() == "RegisterForEstatements" )
{
sessionScope.put( "dialogAcceptEStatementTitle", "Accept e-Statements!" );
var dialogAcceptEstatements = getComponent( "dlgAcceptEStatements" );
dialogAcceptEstatements.show();
return "";
}       

sessionScope.put( "dialogOopsTitle", "Oopps!" );
sessionScope.put( "dialogOopsMessage", "\nThis Feature Has Not Been Enabled Yet!" );
var dialogOops = getComponent( "dialogOops" );
dialogOops.show();
return "";

}]]>
</xp:this.action>
</xp:eventHandler>
</xe:navigator>
</xp:view>


<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:this.resources>
<xp:script src="js/jquery-1.8.2.min.js" clientSide="true" />
<xp:script src="js/jquery-ui-1.9.min.js" clientSide="true" />
<xp:script src="js/jquery.panelgallery-2.0.0.min.js"
clientSide="true" />
<xp:styleSheet href="/eStarTheme.css" />
<xp:script src="/jsDominoGlobals.jss" clientSide="false"></xp:script>
</xp:this.resources>
<xp:this.data>
<xp:dominoDocument var="selectedOccupant"
databaseName="star/lms.nsf" formName="fOccupant" action="editDocument">
<xp:this.documentId><![CDATA[#{javascript:return sessionScope.get("OccupantUNID");}]]></xp:this.documentId>
</xp:dominoDocument>
</xp:this.data>

<xe:dialog id="dlgAcceptEStatements"
title="#{javascript:sessionScope.dialogAcceptEStatementTitle;}">
<xp:panel>
<xp:table>
<xp:tr>
<xp:td>
<xp:label value="Electronic Acceptance" id="acceptEStatementsTitle_Label1"
for="acceptEStatementsTitle1">
</xp:label>
</xp:td>
<xp:td>
<xp:div styleClass="lotusMessage lotusInfo" role="alert">
<xp:inputTextarea id="acceptedMessage" readonly="true"
style="width:auto">
<xp:this.value><![CDATA[#{javascript:myEStatements.getEStatementAcceptMessage()}]]></xp:this.value>
</xp:inputTextarea>
</xp:div>
</xp:td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:label value="Check if you accept the verbiage above"
id="acceptEStatementsURL_Label1" for="acceptEStatementsAccept1">
</xp:label>
</xp:td>
<xp:td>
<xp:checkBox text="" id="acceptEStatementsChecked"
value="#{selectedOccupant.EStatementsAccepted}"></xp:checkBox>
</xp:td>

</xp:tr>
<xp:tr>
<xp:td>
</xp:td>
<xp:td>
<xp:button value="Save" id="btnSave">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
selectedOccupant.replaceItemValue( "EStatementsAccepted", getComponent( "acceptEStatementsChecked" ).getValue() );
selectedOccupant.replaceItemValue( "EStatementsAcceptMessage", getComponent( "acceptedMessage" ).getValue() );
selectedOccupant.replaceItemValue( "EStatementsAcceptedDate", new Date() );
selectedOccupant.save();
getComponent( "dlgAcceptEStatements" ).hide();
}]]></xp:this.action>
<xp:this.onComplete>
<![CDATA[linkToEstatementsSignup();]]>
</xp:this.onComplete>
</xp:eventHandler>
</xp:button>
<xp:button value="Cancel" id="btnCancel">
<xp:eventHandler event="onclick"
submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:getComponent( "dlgAcceptEStatements" ).hide();}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:td>
</xp:tr>
</xp:table>
</xp:panel>
</xe:dialog>
</xp:view>

尝试在onComplete事件中启动客户端代码:

<xp:button id="button29" value="button29">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="dlgAcceptEStatements">
        <xp:this.action><![CDATA[#{javascript:
            selectedOccupant.replaceItemValue( "EStatementsAccepted", getComponent("acceptEStatementsChecked" ).getValue() );
            selectedOccupant.replaceItemValue( "EStatementsAcceptMessage", getComponent( "acceptedMessage" ).getValue() );
            selectedOccupant.replaceItemValue( "EStatementsAcceptedDate", new Date() );
            selectedOccupant.save();
            getComponent( "dlgAcceptEStatements" ).hide();
        }]]></xp:this.action>
        <xp:this.onComplete>
            <![CDATA[linkToEstatementsSignup();]]>
        </xp:this.onComplete>
    </xp:eventHandler>
</xp:button


启动新windows对浏览器实现、用户偏好、公司策略、广告拦截器等非常敏感。即使它没有被阻止,浏览器也可能强制它成为新选项卡而不是新窗口。更好的处理方法是将扩展库中对话框组件的实例中的附加内容包装起来,这样在视觉上它看起来像一个新窗口,但实际上不是。Tim,我需要将用户带到第三方站点。我不确定我能做到。我可以打开一个新窗口或选项卡,因为我们需要启用弹出窗口,但我很难确定它是否适用于不同版本的浏览器。然后在对话框中使用iframe。;)这场比赛让我走得更远了。我现在收到另一条错误消息,上面说“更新某些页面时出错。'linkToEstatementSignup'未定义”。我将使用两个自定义控件成员的完整代码更新我的帖子,以便在页面中包含函数LinkToeStatementSignup()。它似乎不是XPage的一部分(假设您的问题包含最新代码)。调用linkToEstatementsSignup()函数的对话框位于该函数所在的自定义控件中。这在最新版本的Mozilla中运行良好,没有错误。但不是IE或Chrome。我确实将该函数移动到了对话框中,以查看它是否有帮助,并给出了相同的错误。