JavaFXWebEngine中的HyperlinkListener

JavaFXWebEngine中的HyperlinkListener,java,javafx-2,javafx,Java,Javafx 2,Javafx,过去我用的是JEditorPane,现在我正在用JavaFX WebEngine尽最大努力。如何为显示页面上包含超链接的事件(如链接选择或单击链接)注册侦听器 在JEditorPane中有addHyperlinkListener方法 编辑: 我听从了第一个答案中的建议。这是我的代码: webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() { public void c

过去我用的是JEditorPane,现在我正在用JavaFX WebEngine尽最大努力。如何为显示页面上包含超链接的事件(如链接选择或单击链接)注册侦听器

在JEditorPane中有addHyperlinkListener方法

编辑:

我听从了第一个答案中的建议。这是我的代码:

webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
    public void changed(ObservableValue ov, State oldState, State newState) {
        if (newState == Worker.State.SUCCEEDED) {
                // note next classes are from org.w3c.dom domain
            EventListener listener = new EventListener() {
                public void handleEvent(Event ev) {
                    System.out.println("KLIKNIETO!!!");
                }
            };

            Document doc = webEngine.getDocument();
            Element el = doc.getElementById("a");
            NodeList lista = doc.getElementsByTagName("a");
            System.out.println("Liczba elementow: "+ lista.getLength());
            for (int i=0; i<lista.getLength(); i++)
                ((EventTarget)lista.item(i)).addEventListener("click", listener, false);
        }
    }
});
webEngine.getLoadWorker().stateProperty().addListener(新的ChangeListener()){
公共无效已更改(ObservalEvalue ov、State oldState、State newState){
if(newState==Worker.State.successed){
//注意下一个类来自org.w3c.dom域
EventListener=新的EventListener(){
公共无效handleEvent(事件ev){
System.out.println(“KLIKNIETO!!!”;
}
};
Document doc=webEngine.getDocument();
元素el=doc.getElementById(“a”);
NodeList lista=doc.getElementsByTagName(“a”);
System.out.println(“Liczba elementow:+lista.getLength());

对于(inti=0;i,在加载相关文档后,您可以通过使用W3CDOM类在Java中添加click事件处理程序来捕获链接click事件

参见中Sergey的示例

您还可以使用JavaScript(例如使用)捕获事件,这可能比w3cdomapi更易于使用

如果您使用JavaScript捕获事件,并且希望将事件通知或后续处理从JavaScript反馈到Java,则可以使用

我已记录了一个请求,要求将此功能的示例添加到官方WebView教程中。

您已经

System.out.println("KLIKNIETO!!!");
取代

String href = ((Element)ev.getTarget()).getAttribute("href");
获取单击的链接的URL

本页提供了一个很好的示例,说明您正在尝试执行的操作:


更简单的方法是使用LibFX libaries WebViewHyperlinkListener:

所有我的链接都不指向其他网站(http协议)但对于数据库中的记录:。我想创建一个事件处理程序,该处理程序将解析来自此类链接的数据并显示它。我的答案如何帮助您做到这一点?您尝试了什么方法?您在哪里遇到了问题?您可以编辑您的问题以提供此新信息。发布更新。我想知道如何获取对单击链接的引用什么类型的内容nt是否需要?dom节点、文本内容、href、从链接的href位置检索的内容?我需要链接的href内容(例如)