我有一个 JavaFX 应用程序,可以在 WebView 中加载我自己的 HTML/JS 应用程序。根据事件,我需要从 Java 调用 Javascript,从 Javascript 调用 Java。
从 JS 到 Java 时一切都很好,但从 Java 到 Javascript 时我有一些奇怪的行为。
- 基本上,这是我如何设置两种语言之间的通信:
_
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 上的回调被丢弃了。
从 Java 调用 JS 时是否有任何已知限制?