JavaFXWebEngine中的HyperlinkListener
过去我用的是JEditorPane,现在我正在用JavaFX WebEngine尽最大努力。如何为显示页面上包含超链接的事件(如链接选择或单击链接)注册侦听器 在JEditorPane中有addHyperlinkListener方法 编辑: 我听从了第一个答案中的建议。这是我的代码: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
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内容,例如。