2016-12-27 26 views
0

私はWebViewをJavaFXに持っています。ハイパーリンクをブロックするか、ユーザーをリダイレクトするかを決定するイベントハンドラを追加する必要があります。私はすでにthis questionを見ました。しかし、リダイレクトをブロックする方法はありません。Javafx WebView/Web Engineでハイパーリンクをブロックする

EDIT:

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のリンクをオープンエンド/ブラウザにリダイレクトされないようにしたいと考えています。 (これはあなたが探しているものです)

あなたがリダイレクトし、あなたが言ったチェックをする方法を知っていると思います。そうでない場合、嘆願はあなたが目指していることをもう少し詳しく説明し、あなたが試したことのいくつかのコードを投稿します。

+0

ありがとうございますが、イベントをどのように消費しますか? –

+0

@ Ma_124 'e'は渡されたイベント(eventHandler内)であると仮定し、' e.consume() 'を実行します。 – n247s

+0

しかし、 'org.w3c.dom.events.Event'インターフェースでは、' consume() 'のようなメソッドはありません。 –

関連する問題