libreofficexform:如何使用javascript宏读取表单数据

libreofficexform:如何使用javascript宏读取表单数据,javascript,macros,libreoffice,xforms,Javascript,Macros,Libreoffice,Xforms,我在LibreOffice Writer 5中有一个XForm文档。表单包含各种文本框和日期字段。我想要的是创建一个Javascript宏,该宏将分配给一个文本框,并在用户更改此字段的输入时执行一些操作。到目前为止,我已经写了以下内容 var oDoc = UnoRuntime.queryInterface(XModel, XSCRIPTCONTEXT.getInvocationContext()); if (!oDoc) { oDoc = XSCRIPTCONTEXT.getDocum

我在LibreOffice Writer 5中有一个XForm文档。表单包含各种文本框和日期字段。我想要的是创建一个Javascript宏,该宏将分配给一个文本框,并在用户更改此字段的输入时执行一些操作。到目前为止,我已经写了以下内容

var oDoc = UnoRuntime.queryInterface(XModel, XSCRIPTCONTEXT.getInvocationContext());
if (!oDoc) {
    oDoc = XSCRIPTCONTEXT.getDocument();
}
var xFieldsSupplier = UnoRuntime.queryInterface(XFormsSupplier, oDoc);
var xForm = xFieldsSupplier.getXForms();

但是xForm是空的。有人知道如何获取XForm字段吗?上述代码有问题吗?

代码看起来不错。这似乎是Javascript的一个问题,因为我使用其他语言测试了类似的代码,并且成功了。在Python中,这将打印表单名称:

xforms = oDoc.getXForms()
formName = xforms.getElementNames()[0]
xTextRange = xText.getEnd()
xTextRange.setString(formName)
xform = xforms.getByName(formName)
同样的事情也适用于Java:

XFormsSupplier xFormsSupplier = UnoRuntime.queryInterface(
    XFormsSupplier.class, xComponent);
XNameContainer xforms = xFormsSupplier.getXForms();
String formName = xforms.getElementNames()[0];
xTextRange = xText.getEnd();
xTextRange.setString(formName);
Object aForm = xforms.getByName(formName);
表明对UNO的Javascript支持仍处于初级阶段

请注意,未发布,这可能意味着接口可能会发生更改或不稳定