HyperlinkListener en JavaFX WebEngine
Dans le passé j'ai utilisé JEditorPane et maintenant, je vais essayer de mon mieux avec JavaFX WebEngine. Comment puis-je enregistrer des écouteurs pour les événements contenant des liens hypertexte sur la page affichée à l'écran (comme le lien de sélection ou cliquez sur un lien)?
Dans JEditorPane il y avait addHyperlinkListener méthode...
EDIT:
J'ai suivi les conseils dans la première réponse. C'est mon code:
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);
}
}
});
J'ai maintenant de recevoir des événements après avoir cliqué sur les liens. Cependant j'ai besoin d'obtenir de référence pour le lien cliqué (pour obtenir du contenu). Comment puis-je y parvenir?
- Quel type de contenu avez-vous besoin? Les nœuds dom, le contenu du texte, le href, le contenu extrait de la liés href emplacement?
- J'ai besoin lié href contenu (par exemple, <a href="wanted_content">lien</a>)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez attraper le lien cliquez sur l'événement par l'ajout d'un gestionnaire d'événements click en Java en utilisant le dom du w3c classes que lorsque le document est chargé.
Voir Sergey l'exemple du La détection HTML textarea onkeyup événement en JavaFX WebView.
Vous pouvez également prendre les événements à l'aide de JavaScript (par exemple à l'aide de jQuery), qui peut être un peu plus facile à travailler que le w3c api dom.
Si vous utilisez JavaScript pour capturer des événements et que vous voulez des commentaires de notification des événements ou à un traitement ultérieur de JavaScript en Java, vous pouvez utiliser le JavaScript <=> Java pont de l'api.
Je me suis connecté une demande pour obtenir un échantillon de cette fonctionnalité ajoutée officielle de WebView tutoriel.
Où vous avez
remplacer avec
pour obtenir l'URL du lien cliqué.
Cette page donne un bon exemple de ce que vous essayez de faire:
http://blogs.kiyut.com/tonny/2013/07/30/javafx-webview-addhyperlinklistener
La façon la plus facile serait d'utiliser le LibFX libaries WebViewHyperlinkListener : https://github.com/CodeFX-org/LibFX/blob/master/src/main/java/org/codefx/libfx/control/webview/WebViewHyperlinkListener.java