如何在不重新加载页面的情况下从Javafx编辑HTML页面(在webview中)?
这就是我加载页面的方式,我希望在页面处于浏览器中时对其进行修改如何在不重新加载页面的情况下从Javafx编辑HTML页面(在webview中)?,java,html,javafx,webview,javafx-webengine,Java,Html,Javafx,Webview,Javafx Webengine,这就是我加载页面的方式,我希望在页面处于浏览器中时对其进行修改 WebView browser = new WebView(); WebEngine engine = browser.getEngine(); String cwd = System.getProperty("user.dir"); String name = "\\src\\web\\index.html"; engine.loadContent(getPATHtoHTML(cwd + n
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));
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();
}
对于新内容,您可以使用相同的方法刷新页面:
engine.loadContent(“新内容…”)
;要编辑HTML,你必须使用javafx.scene.web.HTMLEditor
。我不得不用我的代码欺骗你的代码,但它工作得非常好,谢谢!
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);