У меня есть приложение JavaFX, которое загружает мое собственное приложение HTML/JS в WebView. В зависимости от события мне нужно вызвать Javascript с Java и Java из Javascript.JavaFX + WebView/Javascript: setTimeOut не работает стек вызовов приходит из Java
Каждый из них хорош при переходе от JS к Java, но у меня странное поведение при переходе с Java на Javascript.
- Вот, в принципе, как мне установить связь между 2-х языках:
_
var javaObjectInjected = typeof javaObject !== "undefined";
if(javaObjectInjected && !javaObjectInitialized) {
jThalesEventBusInitialized = true;
const jsAdapter = {
publishToJs: onPublishToJs
};
javaObject.setJsAdapter(jsAdapter);
}
- Мой Java код будет вызывать метод
publishToJs
на поставленномjsAdapter
. Это приведет к выполнениюonPublishToJs
.
_
function onPublishToJs(topic, data) {
alert('Yeah! We are inside JS'); //output_1
setTimeout(
function() {
alert('inside setTimeOut'); //output_2
},
1000
);
}
я получить OUTPUT_1 но не output_2. Это похоже на обратный вызов setTimeOut, который был отброшен.
Существуют ли какие-либо известные ограничения при вызове JS из Java?
Это довольно угадайте - попробуйте что-то другое, кроме 'alert' в обратном вызове' setTimeout', например, записывая что-то на консоль. – dave
Выходы консоли JS не перенаправляются на консоль Java, поэтому я добавил FireBug Lite 1.2 в раздел
моего HTML. В обратном вызове setTimeOut я заменил alert ('...') на console.log ('...') и ничего не изменил. Еще нет выхода_2! – Pigelvy