java - 如何从 Java applet 线程调用 JavaScript 回调?

标签 java javascript dom callback thread-safety

我有一些长时间运行的 Java 代码在由 Java applet 启动的线程中运行。一旦代码完成,它就会为用户提供信息。我想以线程安全的方式将此信息传递给 JavaScript 回调。仅仅使用 Java DOM API 来修改 HTML 文档是不够的,除非我的 JavaScript 回调作为副作用以线程安全的方式被调用(即最终,在执行 JavaScript 回调的同一浏览器线程中)。我该如何实现?是否有图书馆已经在这样做了?

最佳答案

看起来 Common DOM API 就是您所需要的。本质上,您请求 DOMService 在主 UI 线程准备就绪时给您回电。

http://docs.oracle.com/javase/1.5.0/docs/guide/plugin/developer_guide/java_js.html

据我了解,JSObject 是“旧方法”,而 Common DOM API 是较新的方法(从 Java 6 开始)。您需要做的是调用您的小程序的一个方法并传递您想要回调的函数对象。然后,您的小程序会从您的 DOMAction 中调用该函数对象。

我手头没有代码可以向您展示,这不是我在使用 Java 之前做过的事情。但是,我使用了一种类似的技术,它来自用 C++ 编写的 NPAPI Web 插件,即让 JS 调用我的 C++ 对象,将函数作为参数传递,然后在稍后阶段,让 C++ 对象调用 JS 函数。 '希望这有帮助。

关于java - 如何从 Java applet 线程调用 JavaScript 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3596921/

相关文章:

java - 如何将 Web 服务返回的集合 (ArrayList) 绑定(bind)到 Swing 中的 JTable?

java - 对 Java 堆的访问是否仅限于运行该程序的 JVM

javascript - Slidetoggle 在点击时无法正常工作

android - dom 解析器错误 : PI must not start with xml

javascript - 从源中完全删除标签

Java:如何重用SocketChannel

java - 以分钟为单位的倒数计时器

javascript - jQuery on() stopPropagation 不起作用?

javascript - 选择要为函数传递的参数。 Javascript

jquery - 在 jQuery 中绑定(bind)函数之前检查元素存在的最佳方法?