2013-07-09 44 views
5

過去我使用過JEditorPane,現在我正在用JavaFX WebEngine嘗試一下。我如何在顯示的頁面上爲包含超鏈接的事件註冊監聽者(如鏈接選擇或點擊鏈接)?JavaFX中的HyperlinkListener 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); 
     } 
    } 
}); 

我現在收到事件後點擊鏈接。不過,我需要參考點擊鏈接(獲取它的內容)。我怎樣才能做到這一點?

+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教程。

+0

我的所有鏈接都不指向其他網站(http協議),而是指向數據庫中的記錄:some_link。我想創建事件處理程序,它將解析來自這些鏈接的數據並顯示它。 – Marco

+0

我的答案不能幫助你做到這一點?你嘗試過什麼方法,你卡在哪裏?您可以編輯您的問題以提供此新信息。 – jewelsea

+0

發佈已更新。我不知道如何獲得點擊鏈接的參考 – Marco

相關問題