java - JavaFX WebEngine 中的 HyperlinkListener

标签 java javafx-2 javafx

过去我使用 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);
        }
    }
});

我现在在点击链接后收到事件。但是我需要获得对单击链接的引用(以获取其内容)。我怎样才能做到这一点?

最佳答案

你在哪里

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

替换为

String href = ((Element)ev.getTarget()).getAttribute("href");

获取点击链接的 URL。

此页面很好地说明了您正在尝试执行的操作:

http://blogs.kiyut.com/tonny/2013/07/30/javafx-webview-addhyperlinklistener

关于java - JavaFX WebEngine 中的 HyperlinkListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555937/

相关文章:

java - 如何访问上一个 Activity 的数据?

java - 从另一个包含 session 的 Servlet 调用 Servlet 期间

java - 如何让 JavaFX 2.0 ChoiceBox 选择它的第一个元素

java - 为什么多个实现不允许在 module-info.java 中声明为模块服务?

java - Xamarin 和 APK 签名 - 更改 JarSigner 的路径

java - 使用 javafx 媒体类播放 wmv 文件

java - 为什么 javafx.scene.text.Font 不可序列化?

Java错误: Module javafx.未找到基础

JavaFX 8 错误的 SplitPane 的分隔符位置

intellij-idea - Intellij IDEA - JavaFX 打包程序 : access denied