JXBrowser - Array.isArray(exception.getStackTrace()) 返回 false

JXBrowser - Array.isArray(exception.getStackTrace()) returning false

这 return 不应该是一个数组吗? 很难通过对象来模仿客户端的行为。

事实上,即使 window.asObject().setProperty("aaa", new String[]{"bbb"}); 也不是 Javascript 数组。请参阅以下示例:

execute("aaa.splice != null ? 'a' : 'b'")
execute("Arrays.isArray(aaa) ? : 'a' : 'b'")

在 UI4J 和 Rhino 中工作正常,但现在在 JXBrowser 中不工作。

在 JxBrowser 中,只有 Java 原始类型被转换为本机 JavaScript 类型。对于其他类型,您设置为 JSObject 的 属性 被映射到相应的 Java 对象,并且当您调用 JavaScript 对象的方法时,Java 的相应方法实际调用对象。当前实现中对数组有一些限制,但是,您可以获取数组大小并通过索引访问其成员:

Java:

window.setProperty("arr", new String[]{"aaa", "bbb", "ccc"});

Java脚本:

var length = window.arr.length();
for (int i = 0; i < length; i++) {
    console.log(window.arr[i]);
}