2016-12-27 55 views
0

我在JavaFX中有WebView。我想添加一個事件處理程序來決定是否要阻止超鏈接或重定向用戶。我已經看到了this question。但是沒有一種方法可以阻止重定向。阻止Javafx WebView/Web引擎中的超鏈接

編輯:

getWebEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<State>() { 
     public void changed(ObservableValue ov, State oldState, State newState) { 
      if (newState == Worker.State.SUCCEEDED) { 
       EventListener listener = new EventListener() { 
        public void handleEvent(Event ev) { 
         System.out.println("KLIKNIETO!!!"); 
        } 
       }; 

       Document doc = getWebEngine().getDocument(); 
       NodeList lista = doc.getElementsByTagName("a"); 
       System.out.println("Count: " + lista.getLength()); 
       for (int i=0; i<lista.getLength(); i++) 
        ((EventTarget)lista.item(i)).addEventListener("click", listener, false); 
      } 
     } 
    }); 

進口:

import org.w3c.dom.events.Event; 
import org.w3c.dom.events.EventListener; 
import org.w3c.dom.events.EventTarget; 

回答

0

您所提供的答案是一個完美的解決方案。你可以打電話給consume這個事件,以防止鏈接被opennend /瀏覽器重定向。 (這是你在找什麼?)

我假設你知道如何重定向並執行你提到的檢查。如果沒有,pleaese更詳細地闡述一下你正在瞄準的東西,併發布一些你已經嘗試過的代碼。

+0

謝謝,但我如何消費一個事件? –

+0

@ Ma_124假設'e'是傳入事件(在eventHandler中),請執行'e.consume()'。 – n247s

+0

但在接口'org.w3c.dom.events.Event'沒有像'consume()'定義的方法 –