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]);
}
这 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]);
}