• Взаимодействие Java и JS приложений?

    @alex_137
    Здравствуйте. Наверное ответ по времени не актуален, но прокомментирую. Может быть кому то пригодиться:
    Я использовал Java FX и его элемент WebView, получал объект окна браузера и вызывал обратные функции в javascript.
    Получение объекта окна.
    browser.getEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
      @Override
      public void changed(ObservableValue ov, State oldState, State newState) {
         if(newState == Worker.State.SUCCEEDED) {
              JSObject jsobj = (JSObject) browser.getEngine().executeScript("window");
     jsobj.setMember("bridge", jl);
           }
       }
    });

    Создаем так называемый мост
    private Bridge jl = new Bridge();
    public class Bridge {
       public String elementId() {      //отправляем обратно в SVG 
         System.out.println("receive id");
          return numberID;
      }
       public String elementIdText() {
          if (numberID.startsWith("tspan")) {
             String answer = "Java Callback";
             iclick = true;
             answer+=' '+ numberID;
            return answer;
         }
         return "Finish";
      }
    }

    javascript - обратные функции
    function doCallbackText() {
       var SVG = document.getElementById('Capa_1');
       var path = bridge.elementId();   //читаем из приложения
      var path1 = bridge.elementIdText();
      if (path1!= "Finish") SVG.getElementById(path).textContent = path1;
       console.log(path1+"Вставляю текст");
    }

    Более подробно и другие методы смотри здесь: https://www.ap-impulse.com/java-and-javascript-con...
    Ответ написан
    Комментировать