Внедрить HTML-код из веб-двигателя javafx
Попытка добавить к содержанию HTML-страницы после загрузки веб-движком javafx.
webEngine.load(getClass().getResource("teachsticks/classroomscreen.html").toExternalForm());
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue<? extends Worker.State> observable,
Worker.State oldValue, Worker.State newValue) {
if (newValue == Worker.State.SUCCEEDED) {
JSObject win = (JSObject) webEngine.executeScript("window");
win.setMember("app", new JavaApp());
Document doc = webEngine.getDocument();
JavaApp app = new JavaApp();
// [...]
Сначала я попытался добавить этот метод, но не получилось:
Element elementNode = doc.createElement("div");
elementNode.setAttribute("id", "stat");
elementNode.appendChild(app.readHeading(app.buildContent(),doc));
Element el = doc.getElementById("content-1");
el.appendChild(elementNode);
Я также попробовал эту секунду ниже. Функция javascript включена в html-страницу, но при выполнении сценария она обнаруживает ошибку:
webEngine.executeScript("test('" + string + "');");
Exception in thread "JavaFX Application Thread" netscape.javascript.JSException: SyntaxError: Unexpected EOF
at com.sun.webkit.dom.JSObject.fwkMakeException(JSObject.java:128)
at com.sun.webkit.WebPage.twkExecuteScript(Native Method)
at com.sun.webkit.WebPage.executeScript(WebPage.java:1427)
at javafx.scene.web.WebEngine.executeScript(WebEngine.java:948)
at teachsticks_1.WebClientHandler.executejQuery(WebClientHandler.java:78)
at teachsticks_1.WebClientHandler.access$100(WebClientHandler.java:63)
at teachsticks_1.WebClientHandler$1.changed(WebClientHandler.java:134)
at teachsticks_1.WebClientHandler$1.changed(WebClientHandler.java:111)
at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:182)
at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:81)
at javafx.beans.property.ReadOnlyObjectWrapper$ReadOnlyPropertyImpl.fireValueChangedEvent(ReadOnlyObjectWrapper.java:176)
at javafx.beans.property.ReadOnlyObjectWrapper.fireValueChangedEvent(ReadOnlyObjectWrapper.java:142)
at javafx.beans.property.ObjectPropertyBase.markInvalid(ObjectPropertyBase.java:112)
at javafx.beans.property.ObjectPropertyBase.set(ObjectPropertyBase.java:146)
Метод 3 также столкнуться с той же ошибкой
String string = nodeToString(elementNode);
string = string.replace("xmlns=\"http://www.w3.org/1999/xhtml\"", "");
string = StringEscapeUtils.escapeHtml3(string);
System.out.println(string);
executejQuery(webEngine, "$('#j').append('"+string+"!');");
executejQuery()
здесь
Строка, которая должна быть введена:
<DIV id="stat" xmlns="http://www.w3.org/1999/xhtml">
<UL>
<LI data-jstree="{"icon":"http://jstree.com/tree.png"}">Statistics
<UL>
<LI data-jstree="{"icon":"glyphicon glyphicon-ok-sign"}">Data Collection</LI>
<LI data-jstree="{"icon":"glyphicon glyphicon-ok-sign"}">Introduction to Statistics</LI>
</UL>
</LI>
</UL>
</DIV>
Какими способами этого можно достичь.