首页 > 解决方案 > JavaFX WebView 在 org.w3c.dom.Element 中获取/设置内部/外部 HTML;

问题描述

我正在使用带有 webview 的 JavaFX HTMLEditor。我有以下对象(名称不言自明)

private HTMLEditor htmlEditor;

// for manipulating the html structure of the editor
WebView webView;
WebEngine webEngine;

// for accessing the document
HTMLDocumentImpl htmlDocImpl;

我试图避免构建大字符串以将长函数传递给

webEngine.executeScript();

因此,我一直在通过向 webEngine 添加侦听器来从文档中获取 HTML,将文档存储在 htmlDocImpl 中,然后以这种方式访问​​ DOM,例如,这会向 webEngine 添加鼠标侦听器,此时我设置了 htmlDocImpl

    webEngine.documentProperty().addListener((observable, oldDoc, newDoc) -> {
        htmlDocImpl = (HTMLDocumentImpl) newDoc;
        htmlDocImpl.setOnmousemove(event -> {
        
            MouseEvent mouseE = (MouseEvent) event;
            activeMouseElem = htmlDocImpl.elementFromPoint(
                    (int)mouseE.getClientX(),
                    (int)mouseE.getClientY()
            );
            //System.out.println(activeMouseElem.toString());
        });
    });

这让我可以访问 webEngine 中的 DOM。然后我使用这些对象操作节点:

org.w3c.dom.Element;
org.w3c.dom.Node;

问题是,我不知道如何使用这种方法来获取或设置这些对象的内部 HTML。我可以做一些事情,比如添加孩子、删除元素等,但我需要能够设置他们的 HTML!我找不到任何方法可以做到这一点。我想直接修改 HTML 的唯一方法是在 .executeScript() 中使用 Javascript。

如果有人能告诉我这是如何完成的,我将不胜感激。谢谢你。

标签: javafx

解决方案


推荐阅读