Javascript 使用XPages中的ClientSide JS将值传递到新窗口
我想用客户端JavaScript将4个字段的值传递给新的XPages 下面是我迄今为止尝试的内容,我无法将值放入新XPages中的字段:( //客户端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 =
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
这是一个在客户端不同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(服务器:端口)。