2013-07-09 12 views
5

In passato ho utilizzato JEditorPane e ora sto facendo del mio meglio con JavaFX WebEngine. Come posso registrare i listener per gli eventi contenenti collegamenti ipertestuali nella pagina visualizzata (come la selezione del collegamento o fare clic su un collegamento)?HyperlinkListener in JavaFX WebEngine

In JEditorPane c'era metodo addHyperlinkListener ...

EDIT:

ho seguito il consiglio nella prima risposta. Questo è il mio codice:

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

Ora ricevo gli eventi dopo aver fatto clic sui collegamenti. Tuttavia ho bisogno di ottenere riferimenti al link cliccato (per ottenere il suo contenuto). Come posso ottenerlo?

+0

Che tipo di contenuti avete bisogno? I dom node, il contenuto del testo, l'href, il contenuto recuperato dalla posizione href collegata? – jewelsea

+0

Ho bisogno di contenuti href collegati (ad esempio some link) – Marco

risposta

2

È possibile catturare l'evento click link aggiungendo un gestore di eventi click in Java utilizzando le classi dom w3c una volta caricato il documento pertinente.

Vedere l'esempio di Sergey in Detecting HTML textarea onkeyup event in JavaFX WebView.

È inoltre possibile catturare gli eventi utilizzando JavaScript (ad esempio utilizzando jQuery), che potrebbe essere un po 'più facile da lavorare rispetto a w3c dom api.

Se si utilizza JavaScript per rilevare eventi e si desidera ricevere una notifica di feedback degli eventi o l'elaborazione successiva da JavaScript a Java, è possibile utilizzare JavaScript <=> Java bridge api.

Ho registrato una richiesta per ottenere un esempio di questa funzionalità aggiunta all'esercitazione ufficiale di WebView.

+0

Tutti i miei collegamenti non puntano ad altri siti Web (protocollo http) ma a record nel database: some_link. Voglio creare un gestore di eventi che analizzerà i dati da tali collegamenti e li visualizzerà. – Marco

+0

In che modo la mia risposta non ti aiuta a farlo? Quale approccio hai provato e dove sei bloccato? Puoi modificare la tua domanda per fornire queste nuove informazioni. – jewelsea

+0

post aggiornato. Mi chiedo come posso ottenere il riferimento al link cliccato – Marco

Problemi correlati