使用XPage在新选项卡中打开链接时没有运气

时间:2013-04-02 13:23:07

标签: xpages xpages-ssjs

我正在处理应用程序,当我想在新标签页或窗口上打开链接时,我遇到了困难。 我使用的是Lotus Notes Designer 8.5.2FP1版。 我附上了我的一段代码。

<xp:eventHandler event="onclick" submit="true"
        refreshMode="complete">
        <xp:this.action><![CDATA[#{javascript:try{
var doc = database.getProfileDocument("frmConfiguration","");
var url = doc.getItemValueString("HeaderLink1URL");
view.postScript("var tempwindow =window.open('"  +url+"','_blank');tempwindow.focus();");
}catch(e){
}}]]></xp:this.action>

3 个答案:

答案 0 :(得分:4)

根据您的updated code in comment,您只需添加target="_blank"即可使用onClick属性代替使用value事件,该属性将指向要打开的网址。所以你的代码是这样的:

<xp:link escape="false" id="link1" target="_blank">
    <xp:this.text>some code</xp:this.text>
    <xp:this.value><![CDATA[#{javascript:var doc = database.getProfileDocument("frmConfiguration","");
var href = doc.getItemValueString("HeaderLink1URL");
return href;}]]></xp:this.value>
</xp:link>

答案 1 :(得分:1)

最简单的方法是:

<xp:text escape="false" id="newTab"><xp:this.value><![CDATA[#{javascript:return "<a href=\"http://www.google.com/\" target=\"_blank\">Google</a>";}]]></xp:this.value></xp:text>

这将在附加标签中打开谷歌。

<强>更新

如果您想使用xp:link,可以尝试:

<xp:link escape="false" id="newTab" text="test">
        <xp:this.onclick><![CDATA[var ret = window.open("http://www.google.com",'_blank');
]]></xp:this.onclick>
    </xp:link>

如果你想在一个单独的窗口或标签中打开链接我建议不要使用aktion使用选项标签中的onclick客户端事件。

答案 2 :(得分:0)

以下是在客户端和服务器端打开URL的示例代码。

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:button value="Client Side Open Button." id="ClientSideButton">
        <xp:eventHandler event="onclick" submit="false">
            <xp:this.script><![CDATA[var href = "http://www.ibm.com";
var tempwindow = window.open(href,'_blank');
tempwindow.focus();
]]></xp:this.script>
        </xp:eventHandler>
    </xp:button>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:button id="serverSideButton" value="Server Side Open Button ">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:var href = "http://www.ibm.com";
view.postScript("var tempwindow = window.open('" + href + "','_blank'); tempwindow.focus();");

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

如果此代码无法按预期工作,请检查两件事。

  1. 检查是否正确设置了url变量。

  2. 确保您使用的是最新版本。 window.open()在8.5.1FP2之前没有按预期工作。