Я пишу приложение JavaFX, которое взаимодействует с JavaScript, используя WebView и WebEngine (метод .executeScript()).webEngine.executeScript(); Throwing Exception
Вот, у меня есть часть кода из Medow.java, который загружает map.html (содержит JavaScript код), и этот код работает довольно хорошо:
add_button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent ea5) {
// webEngine.executeScript("document.fun();"); // For Drawing Shapes
if (add == false) {
webEngine.executeScript("document.fun();"); // For Drawing Shapes
add = true;
}
// }
else {
webEngine.executeScript("document.reSet();"); // To remove Drawing Shapes
add = false;
}
}
});
В этом
webEngine.executeScript();
ли Вызов соответствующей функции в JavaScript
Но теперь я хочу, чтобы мой Java код, чтобы вызывать некоторые функции JS, когда программа начинается, поэтому я сразу пишу:
webEngine.executeScript("document.draw();");
прямо под/после кода, который загружает файл map.html.
Итак, теперь, как оба из webEngine.execute("document.fun();");
и webEngine.executeScript("document.draw();");
почти одинаковы, я не могу понять, какая разница, это делает, чтобы быть внутри <button>.setOnAction
блока и быть вне его, потому что как WebEngine и Webview объявлены как глобальные переменные ,
не может вызывать функцию document.draw() с использованием опций HTML onLoad, потому что мне нужно передать некоторые значения для функции draw from java.
Исключение Вырабатываемые:
netscape.javascript.JSException: TypeError: undefined is not a function (evaluating 'document.draw()')
, как я могу сделать эту работу? Благодарю вас
Непрерывно пытаясь выяснить, в чем причина, я обнаружил, что объект HTMLDocument, созданный с использованием webEngine.load()
, по какой-то причине видится только внутри метода дескриптора, и нигде больше, даже если он был определен снаружи.