2013-07-09 3 views
5

以前はJEditorPaneを使用していましたが、今ではJavaFX WebEngineでベストを尽くしています。表示されたページにハイパーリンクを含むイベントのリスナーを登録するにはどうしたらいいですか(リンクの選択やリンクのクリックなど)? JEdi​​torPaneのでJavaFX WebEngineのHyperlinkListener

はaddHyperlinkListener方法があった...

EDIT:

私は最初の回答でアドバイスを行いました。これは私のコードです:

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

私は今、リンクをクリックしてイベントを受け取ります。しかし、私はクリックされたリンクへの参照を取得する必要があります(コンテンツを取得する)。それをどうすれば実現できますか?

+0

あなたは、コンテンツのどのような種類が必要ですか? DOMノード、テキストコンテンツ、href、リンクされたhrefの場所から取得されたコンテンツ? – jewelsea

+0

リンクされたhrefのコンテンツが必要です(some link) – Marco

答えて

2

関連するドキュメントがロードされたら、w3c domクラスを使用してJavaでクリックイベントハンドラを追加することで、リンクのクリックイベントを捕捉できます。

セルゲイの例をDetecting HTML textarea onkeyup event in JavaFX WebViewでご覧ください。

JavaScriptを使用してイベントをキャッチすることもできます(たとえば、jQueryを使用)。これはw3c dom apiよりも操作が簡単です。

JavaScriptを使用してイベントをキャッチし、イベント通知またはJavaScriptからJavaへの後続の処理のフィードバックを希望する場合は、JavaScript <=> Java bridge apiを使用できます。

公式WebViewチュートリアルに追加されたこの機能のサンプルを取得するためのリクエストが記録されました。あなたは

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

を持って

+0

私のすべてのリンクは他のウェブサイト(httpプロトコル)を指し示すのではなく、データベースのレコード:some_linkです。そのようなリンクからデータを解析して表示するイベントハンドラを作成したいと思います。 – Marco

+0

私の答えは、これを行うのにどのように役立たないのですか?あなたは何のアプローチを試みましたか?質問を編集してこの新しい情報を提供することができます。 – jewelsea

+0

投稿が更新されました。私はどのように私はクリックされたリンクへの参照を取得することができますか? – Marco

関連する問題