这不应该返回一个数组吗? 使传递对象以模仿客户端的行为变得非常困难。
实际上即使window.asObject().setProperty("aaa", new String[]{"bbb"});
也不是Javascript数组。请参阅以下示例:
execute("aaa.splice != null ? 'a' : 'b'")
execute("Arrays.isArray(aaa) ? : 'a' : 'b'")
在UI4J和Rhino中运行良好,但现在不在JXBrowser中。
答案 0 :(得分:1)
在JxBrowser中,只有Java基元类型被转换为本机JavaScript类型。对于其他类型,您设置为JSObject的属性将映射到相应的Java对象,并且当您调用JavaScript对象的方法时,实际上会调用相应的Java对象方法。当前实现中的数组存在一些限制,但是,您可以通过索引获取数组大小并访问其成员:
爪哇:
window.setProperty("arr", new String[]{"aaa", "bbb", "ccc"});
JavaScript的:
var length = window.arr.length();
for (int i = 0; i < length; i++) {
console.log(window.arr[i]);
}