Object.keys() 在移动环境中 (Adobe Acrobat Reader)

Object.keys() on mobile environment (Adobe Acrobat Reader)

我正在尝试迭代一些对象键,然后用值填充一些 DropDown。在 PC 上,我尝试过的所有解决方案都运行良好 - 不幸的是在移动设备上却不行。

所以这是我尝试过的:

 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 的 Adob​​e Reader Mobile 是不可能的。填充组合框(下拉菜单)和列表框是使用 Field.setItems() 方法完成的,该方法在 Reader Mobile 中不可用。

例如,在桌面版中,以下代码将使用数组中的值填充 "StateBox" 字段。内部数组第一项是用户值(在UI中呈现),第二项是导出值(提交数据时导出的值)。

var c = this.getField("StateBox");    
c.setItems([["California", "CA"],["Massachusetts", "MA"], ["Arizona", "AZ"]]);

相同的代码在移动设备上完全失败,没有出现错误。