我想在 JavaFX WebView 中加载一些内容或页面,并向 Java 提供一个 Bridge 对象,以便页面的内容可以调用 java。
这里描述了如何执行此操作的基本概念:https://blogs.oracle.com/javafx/entry/communicating_ Between_javascript_and_javafx
现在我的问题是:什么时候是将桥接对象注入到 WebView 中的好时机,以便它尽快可用。
一种选择是在页面加载之后,如下所述:https://stackoverflow.com/a/17612361/1520422
但是有没有办法更快地注入它(在页面内容本身初始化之前),以便桥接对象在页面加载期间可用(而不仅仅是在页面加载之后)?
既然没有人回答,我就告诉你我是怎么做的,尽管它很难看。这使得页面能够在非 Java 环境中正常运行,但在 Java 环境中接收 Java 对象。
我首先提供一个onStatusChanged
处理程序到WebEngine
。它监听魔法值window.status
。如果接收到魔术值,则处理程序将安装 Java 对象。 (就我而言,它更复杂,因为我有一些更复杂的编排:我正在执行一个脚本,该脚本为页面提供客户端 API,然后设置another魔法值window.status
使 Java 对象被发送到客户端 API 的初始化方法)。
然后在我的目标页面中,页面的第一个脚本中有以下代码:
window.status = "MY-MAGIC-VALUE";
window.status = "";
该代码在“普通”浏览器中本质上是无操作,但在自定义 JavaFX 嵌入中运行时会触发初始化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)