Pregunta Ejecute una tarea después de que WebView esté completamente cargado


¿Es posible ejecutar una tarea automáticamente después de WebEngine termina de cargar? Sé que puedo obtener un Worker de WebEngine para indicar el progreso de la carga, pero parece que sondear repetidamente Worker no es una solución elegante (es decir, programa de bloqueo hasta que se carga la página). Sé que puedo hacer esto con un Task, entonces puedo obtener el Task para WebEngine de alguna manera, y agregar un ejecutar en el comando completo?


11
2017-09-22 01:51


origen


Respuestas:


Muestra basada en Documentación de WebView:

webView.getEngine().getLoadWorker().stateProperty().addListener(
  new ChangeListener<Worker.State>() {
  @Override
  public void changed(
    ObservableValue<? extends Worker.State> observable,
    Worker.State oldValue, Worker.State newValue ) {

    if( newValue != Worker.State.SUCCEEDED ) {
      return;
    }

    // Your logic here
  }
} );

Como una expresión lambda:

webView.getEngine().getLoadWorker().stateProperty().addListener(
  (ObservableValue<? extends Worker.State> observable,
    Worker.State oldValue,
    Worker.State newValue) -> {
    if( newValue != Worker.State.SUCCEEDED ) {
      return;
    }

    // Your logic here
  } );

16
2017-09-22 03:34