Javascript 使用XPages中的ClientSide JS将值传递到新窗口

Javascript 使用XPages中的ClientSide JS将值传递到新窗口,javascript,xpages,Javascript,Xpages,我想用客户端JavaScript将4个字段的值传递给新的XPages 下面是我迄今为止尝试的内容,我无法将值放入新XPages中的字段:( //客户端JS将值传递到新窗口 var cFld = document.getElementById("#{id:fieldNameID}").innerHTML ; myUrl = "http://serveradres/applicationame.nsf/xspFrmTest.xsp?action=newDocument"; var zWindow =

我想用客户端JavaScript将4个字段的值传递给新的XPages

下面是我迄今为止尝试的内容,我无法将值放入新XPages中的字段:(

//客户端JS将值传递到新窗口

var cFld = document.getElementById("#{id:fieldNameID}").innerHTML ;
myUrl = "http://serveradres/applicationame.nsf/xspFrmTest.xsp?action=newDocument";
var zWindow = window.open(myUrl, '_blank');
var zDoc = zWindow.document;
zDoc.getElementById("#{id:fieldNameID2}").value = "TEST VALUE";
更新1: 我想打开的新页面位于另一个应用程序中。因此,我不能携带任何类型的作用域(应用程序、会话等)的值 考虑下面的示例。从xspfrmtest.xsp到xspfrmtest2.xsp

  • Application1.nsf->xspfrmtest.xsp
  • Application2.nsf->xspfrmtest2.xsp

  • 这是一个在客户端不同Domino数据库的XPage之间传输(大)字段值的示例:

    带有XPage One.xsp的Database One.nsf:

    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view
        xmlns:xp="http://www.ibm.com/xsp/core">
        <xp:inputText
            id="fieldOne"></xp:inputText>
        <xp:button
            value="Open Two.xsp in Two.nsf"
            id="button1">
            <xp:eventHandler
                event="onclick"
                submit="false">
                <xp:this.script><![CDATA[
                    window.open("http://server1/Two.nsf/Two.xsp", '_blank');
                ]]></xp:this.script>
            </xp:eventHandler>
        </xp:button>
    </xp:view>
    
    
    
    数据库2.nsf和XPage 2.xsp:

    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
        <xp:eventHandler
            event="onClientLoad"
            submit="false">
            <xp:this.script><![CDATA[
                var fieldOne = window.opener.document.querySelector('[id$=":fieldOne"]');
                if (fieldOne) {
                    window.document.getElementById("#{id:fieldTwo}").value = fieldOne.value;
                }
            ]]></xp:this.script>
        </xp:eventHandler>
        <xp:inputText 
            id="fieldTwo"></xp:inputText>   
    </xp:view>
    
    
    

    第二个XPage使用
    window.opener
    onClientLoad获取第一个XPage窗口的句柄,然后从那里读取字段值。

    为什么不将这些字段值添加到SessionScope,并从新XPage中的SessionScope读取这些值zWindow-“var zDoc=zWindow.document;zDoc.document.getElementById(“#{id:fieldNameID2}”).value=“TEST value”;“为什么要调用.document两次?请记住,引用“#{id:fieldname}”只对当前XPage上的组件/字段有效。我将使用@FrankvanderLinden的方法(参见上面的注释),但如果您想专门使用客户端JavaScript,则必须编写如下内容:
    zWindow.document.querySelector(“[id$=”:fieldname“]”).value=“TEST value”;
    @pipalia这只是一个复制粘贴错误。在我的页面中,代码是正确的。PS:您还可以将字段值作为url参数提供(例如,
    ..&field1=value1
    )并将目标组件的计算值设置为
    {param.field1}
    。结果变为“未定义”:(在传输时,该数据值消失。我不知道为什么?它至少适用于带有IE 11、Chrome 50或Firefox 46的Domino 9.0.1 FP5。我从头创建了这两个数据库,没有附加设置。不过,您必须调整URL(服务器:端口)。