这是一种显示页面字段或其他对象(包括页码)的方法。
在此示例中,我有 2 页(p1 和 p2):
JavaScript 会打开一个对话框,其中包含您可以直接复制并粘贴到您选择的工具 (p1) 中的所有字段路径:
(p2):
只需在任何地方执行此代码,例如将它放在initialize 事件中,调整第一行中的页面,对话框就会出现。
免责声明:这段代码并不漂亮,我只是把我从不同项目中得到的一些片段放在一起。
var page = p1;
var allFields = [];
var collectPath = function(field) {
if (field.className === "field") {
allFields.push(field.somExpression);
}
}
iterateThrough(page, collectPath, 25);
var dialog = createDialog(allFields.join("\n"));
app.execDialog(dialog);
function iterateThrough(myParentObject, doSomething, levels) {
var levelCount = 1;
var maxCount = levels;
function loopThrough(parent, doSomething, level) {
var allChildElements;
var intNumElements;
var currentElement;
var j;
allChildElements = parent.nodes;
intNumElements = allChildElements.length;
for (j = 0; j < intNumElements; j++) {
currentElement = allChildElements.item(j);
doSomething(currentElement, j, allChildElements);
if (currentElement.className === "subform") {
if (level < maxCount) {
loopThrough(currentElement, doSomething, (level + 1));
}
}
}
}
loopThrough(myParentObject, doSomething, levelCount);
}
function createDialog(msg) {
var width = 400;
var infoTextHeight = 150;
var dialog = {
description: {
name: "Test",
width: width,
height: 200,
elements: [{
type: "view",
elements: [{
type: "cluster",
align_children: "align_row",
name: "Felder",
font: "heading",
elements: [{
width: width,
height: infoTextHeight,
type: "edit_text",
multiline: true,
item_id: "NAME"
}]
},
{
type: "view",
alignment: "align_center",
elements: [{
type: "ok",
alignment: "align_center"
}]
}
]
}]
},
initialize: function (dialog) {
dialog.visible({
ERR1: false
});
dialog.load({
NAME: msg
});
},
commit: function (dialog) {
dialog.end();
}
};
return dialog;
}