过去,我使用过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中添加单击事件处理程序,以捕获链接单击事件。
请参阅JavaFX WebView中的检测HTML textarea onkeyup事件中的 Sergey示例。
您还可以使用JavaScript(例如,使用jQuery)捕获事件,这可能比使用w3c dom api容易一些。
如果您使用JavaScript捕获事件,并且想要反馈事件的通知或从JavaScript到Java的后续处理,则可以使用JavaScript <=> Java bridge api。
我已记录了将此功能的示例添加到官方WebView教程的请求。