Как редактировать HTML-страницу (в веб-просмотре) из Javafx без перезагрузки страницы? - PullRequest
0 голосов
/ 24 октября 2018

Так я загружаю свою страницу и хочу изменить ее, пока она находится в браузере

    WebView browser = new WebView();
    WebEngine engine = browser.getEngine();
    String cwd = System.getProperty("user.dir");
    String name = "\\src\\web\\index.html";
    engine.loadContent(getPATHtoHTML(cwd + name));

1 Ответ

0 голосов
/ 24 октября 2018

Документ DOM доступен и может быть изменен.Это обновляет содержимое WebView.В следующем примере просто добавляется текст к телу, но возможны более сложные манипуляции:

@Override
public void start(Stage stage) {
    WebView webView = new WebView();
    WebEngine engine = webView.getEngine();
    engine.loadContent("<html>"
            + "<body></body>"
            + "</html>");
    TextField textField = new TextField();
    Button button = new Button("add");
    button.setOnAction(evt -> {
        String text = textField.getText();
        Document doc = engine.getDocument();
        Element element = (Element) doc.getElementsByTagName("body").item(0);
        element.appendChild(doc.createTextNode(text));
    });

    Scene scene = new Scene(new VBox(webView, textField, button));

    stage.setScene(scene);
    stage.show();
}

Если вы также хотите изменить файл, вы также можете вывести результат в файл:

DOMSource domSource = new DOMSource(engine.getDocument());
StreamResult result = new StreamResult(outputFile);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "html");
transformer.transform(domSource, result);
...