Я интересно об этом фрагменте кода я использую:Использует ли метод сценария JavaFX8 WebEngine («окно») объект окна JavaScript?
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());
загружает мой index.html
в в WebView
. Поскольку это одностраничное приложение, это все, что мне нужно, и больше нет вопросов.
Теперь, чтобы вернуться к этому вопросу в названии:
ли эта строка: jsobj = (JSObject) webEngine.executeScript("window");
установить JSObject
ссылку на "window object" as it's defined by w3school?
Значение jsobj
теперь равно окну, то представляет собой открытое окно в браузере?
Если это так: возможно, это причина, по которой мое приложение не будет работать, если я использую «страницу перезагрузки» в контекстном меню в WebView
, так как он будет генерировать новый window object
?
Вопрос с бонусом: В моем JavaScript я могу использовать модель, используя java.methodName();
, это «java» здесь идентификатор или как бы я его назвал? Это не совсем пример , поэтому я бы не назвал это так.
Edit: Это мой Java класс:
public class DataModel{
public void alert(String msg) {
System.out.println(msg);
}
}
С моей JavaScript, который встроен в index.html
я могу назвать java.alert("hello world");
для печати hello world
. Поскольку я передаю ссылку модели на window object
, каждая функция в моем JavaScript имеет доступ к DataModel.class
. С точки зрения JavaScript: «java». идентификатор, ссылка, экземпляр, ...?
Отредактировано оригинальное сообщение, спасибо за помощь! :) –
Лучший способ описать это, что java является ссылкой на экземпляр класса DataModel, который при вызове через JavaScript будет туннелировать через JavaFX, чтобы манипулировать экземпляром класса в памяти (тем самым вызывая предупреждение вместе с указанным вами msg). Со ссылкой, которую я предоставил, ознакомьтесь с разделом «Создание ссылок с JavaScript на JavaFX». –
Это отвечает на все, что я просил, спасибо –