Object.keys() 在移动环境中 (Adobe Acrobat Reader)
Object.keys() on mobile environment (Adobe Acrobat Reader)
我正在尝试迭代一些对象键,然后用值填充一些 DropDown。在 PC 上,我尝试过的所有解决方案都运行良好 - 不幸的是在移动设备上却不行。
所以这是我尝试过的:
- 填充 Object.keys
- 在 Whosebug ('old version') 上从某人处尝试过此方法:
function getKeys(obj) {
var keys = [];
iterate(obj, function (oVal, oKey) { keys.push(oKey) });
return keys;
}
function iterate(iterable, callback) {
for (var key in iterable) {
if (key === 'length' || key === 'prototype' || !Object.prototype.hasOwnProperty.call(iterable, key)) continue;
callback(iterable[key], key, iterable);
}
}
Object/Script:
var obj = {
"set1": {
"subSet1": {
"val1": "",
"val2": "",
"val3": ""
},
"subSet2": {
"val1": "",
"val2": "",
"val3": ""
}
}
...
}
var arr = [];
Object.keys(obj["set1"]).forEach(function(key) {
arr.push(obj["set1"][key][val1]);
});
经过一些测试,我可以看出问题是:for...in
语句在移动设备上不起作用。
因为不可能(?)在移动设备上正确调试,所以我无法提供更多信息。 (错误消息或某事)
你们有简单的解决方法吗?
tl/dr:
在不使用 for...in
语句
的情况下迭代对象键并使用键名填充数组
编辑1:
只是为了完成事情.. 可以在 PC 上使用,但不能 可以在移动设备上使用
var testObj = {"a":"aa", "b":"bb", "c":"cc"};
for (var keys in testObj) {
app.alert(keys)
}
for each (var keys in testObj) {
// not working mobile either
}
因为 DropDownLists 不是那么大而且我需要完成一些事情,所以我暂时坚持手动创建我需要的数组。不过还是很好奇。
使用 Acrobat JavaScript 的 Adobe Reader Mobile 是不可能的。填充组合框(下拉菜单)和列表框是使用 Field.setItems() 方法完成的,该方法在 Reader Mobile 中不可用。
例如,在桌面版中,以下代码将使用数组中的值填充 "StateBox" 字段。内部数组第一项是用户值(在UI中呈现),第二项是导出值(提交数据时导出的值)。
var c = this.getField("StateBox");
c.setItems([["California", "CA"],["Massachusetts", "MA"], ["Arizona", "AZ"]]);
相同的代码在移动设备上完全失败,没有出现错误。
我正在尝试迭代一些对象键,然后用值填充一些 DropDown。在 PC 上,我尝试过的所有解决方案都运行良好 - 不幸的是在移动设备上却不行。
所以这是我尝试过的:
- 填充 Object.keys
- 在 Whosebug ('old version') 上从某人处尝试过此方法:
function getKeys(obj) {
var keys = [];
iterate(obj, function (oVal, oKey) { keys.push(oKey) });
return keys;
}
function iterate(iterable, callback) {
for (var key in iterable) {
if (key === 'length' || key === 'prototype' || !Object.prototype.hasOwnProperty.call(iterable, key)) continue;
callback(iterable[key], key, iterable);
}
}
Object/Script:
var obj = {
"set1": {
"subSet1": {
"val1": "",
"val2": "",
"val3": ""
},
"subSet2": {
"val1": "",
"val2": "",
"val3": ""
}
}
...
}
var arr = [];
Object.keys(obj["set1"]).forEach(function(key) {
arr.push(obj["set1"][key][val1]);
});
经过一些测试,我可以看出问题是:for...in
语句在移动设备上不起作用。
因为不可能(?)在移动设备上正确调试,所以我无法提供更多信息。 (错误消息或某事)
你们有简单的解决方法吗?
tl/dr:
在不使用 for...in
语句
编辑1: 只是为了完成事情.. 可以在 PC 上使用,但不能 可以在移动设备上使用
var testObj = {"a":"aa", "b":"bb", "c":"cc"};
for (var keys in testObj) {
app.alert(keys)
}
for each (var keys in testObj) {
// not working mobile either
}
因为 DropDownLists 不是那么大而且我需要完成一些事情,所以我暂时坚持手动创建我需要的数组。不过还是很好奇。
使用 Acrobat JavaScript 的 Adobe Reader Mobile 是不可能的。填充组合框(下拉菜单)和列表框是使用 Field.setItems() 方法完成的,该方法在 Reader Mobile 中不可用。
例如,在桌面版中,以下代码将使用数组中的值填充 "StateBox" 字段。内部数组第一项是用户值(在UI中呈现),第二项是导出值(提交数据时导出的值)。
var c = this.getField("StateBox");
c.setItems([["California", "CA"],["Massachusetts", "MA"], ["Arizona", "AZ"]]);
相同的代码在移动设备上完全失败,没有出现错误。