我想知道我正在使用的这段代码:
WebView webView = new WebView();
JSObject jsobj;
webEngine = webView.getEngine();
try {
webEngine.load(getClass().getResource("index.html").toExternalForm());
} catch (Exception e) {
e.printStackTrace();
}
try {
jsobj = (JSObject) webEngine.executeScript("window");
jsobj.setMember("java", new DataModel());
} catch (Exception e) {
e.printStackTrace()
}
此行将webEngine.load(getClass().getResource("index.html").toExternalForm());
my 加载index.html
到WebView
. 由于它是一个单页应用程序,这就是我所需要的,并且没有更多关于它的问题。
现在回到标题中的问题:
这一行是否:jsobj = (JSObject) webEngine.executeScript("window");
设置对w3school 定义JSObject
的“窗口对象”的引用?这意味着现在等于 window 对象,表示浏览器中打开的窗口?
如果是这样:如果我在 中的上下文菜单上使用“重新加载页面”,这是否可能是我的应用程序无法工作的原因,因为它会生成一个新的?
额外问题:在我的 JavaScript 中,我可以使用这里的“java”访问模型jsobj
WebView
window object
java.methodName();
标识符或我该如何称呼它?它不完全是instance,所以我不会这样称呼它。
编辑:这是我的 Java 类:
public class DataModel{
public void alert(String msg) {
System.out.println(msg);
}
}
从我嵌入的 JavaScript 中,index.html
我可以调用java.alert("hello world");
print hello world
。由于我将模型引用传递给window object
JavaScript 中的每个函数,因此可以访问DataModel.class
. 从JavaScript来看:就是“java”。标识符、引用、实例……?