JxBrowser JSFunction.invoke с объектом
Я хочу вызвать функцию JavaScript из Java, передав функцию функции Object. Я надеялся сделать что-то вроде:
JSObject obj = new JSObject();
obj.setString("property1", "value);
obj.setNumber("property2", number);
и передайте объект в функцию JavaScript через метод JSFunction.invoke(). Но JSObject, по-видимому, не имеет конструктора по умолчанию и таких методов, как "setString". То же самое для JSONString.
В итоге я использовал библиотеку Google GSon для создания строки JSON, которую затем передал в "new JSONString()". Есть ли у вас лучший способ?
Я бы хотел, чтобы ваша документация касалась этого вопроса, а не заставляла меня придумывать это решение. Не то, на что я хотел тратить время.
1 ответ
Вот пример кода, который демонстрирует, как создать объект и установить для него некоторые свойства:
Browser browser = new Browser();
browser.executeJavaScript("function foo(object) { console.log(object.property1); }");
JSObject object = browser.executeJavaScriptAndReturnValue("new Object()").asObject();
object.setProperty("property1", "value 1");
object.setProperty("property2", 15);
JSFunction function = browser.executeJavaScriptAndReturnValue("window.foo")
.asFunction();
function.invoke(null, object);