2016-12-27 5 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' является переданным в событии (в событииHandler), выполните' e.consume() '. – n247s

+0

Но в интерфейсе 'org.w3c.dom.events.Event' нет такого метода, как' consumume() 'defined –

 Смежные вопросы

  • Нет связанных вопросов^_^