Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFXWebEngine中的HyperlinkListener_Java_Javafx 2_Javafx - Fatal编程技术网

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);
        }
    }
});

我现在在点击链接后收到事件。然而,我需要得到点击链接的参考,以获得它的内容。如何实现这一点?

加载相关文档后,您可以通过使用w3c dom类在Java中添加单击事件处理程序来捕获链接单击事件

参见中Sergey的示例

您还可以使用JavaScript捕获事件,例如使用,这可能比w3cdomapi更容易处理

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

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

您已经

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

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

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


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

所有我的链接都不指向其他网站http协议,而是指向数据库中的记录:。我想创建一个事件处理程序,它将解析这些链接中的数据并显示出来。我的回答怎么帮不上你呢?你尝试过什么方法?你被困在哪里?您可以编辑您的问题以提供此新信息。帖子已更新。我想知道我怎样才能得到点击链接的参考,你需要什么样的内容?dom节点、文本内容、href、从链接的href位置检索的内容?我需要链接的href内容,例如。