2015-09-06 8 views
5

Do Java 8u51 dodaje pracował dobrze:Ładowanie lokalny plik JavaScript w WebView w 8u60 Java

  • Masz plik HTML zawierający <script src="javascript.js"></script>
  • załadować ten plik HTML w WebView
  • wywołać funkcję zawierał w javascript.js wykorzystaniem webView.getEngine().executeScript()

Po włączeniu do 8u60 jednak to już nie działa:

Exception in thread "JavaFX Application Thread" netscape.javascript.JSException: TypeError: undefined is not a function 

Plik javascript.js nie jest już ładowany. Działa po uruchomieniu z IDE, gdzie plik JavaScript leży w systemie plików. Jednakże, przestaje działać, gdy aplikacja jest zapakowana, a zatem javascript.js znajduje się wewnątrz pliku JAR.

Każdy pomysł, co się zmieniło i jak można to naprawić?

+0

To nie JDK usterka/jre, nie robi znajdź plik js (możesz zlokalizować go obok słoika i spróbować), Wierzę, że ustawiłeś niewłaściwą ścieżkę pliku js. –

+0

Dlaczego to działało wcześniej, ale już nie? –

+0

Becasue IDE nie generuje pliku jar, a następnie go uruchamia, a robisz to w ten sposób, musisz określić plik javascript, który jest zasobem JAR osadzarki –

Odpowiedz

4

Od wersji Java 8u60 lokalne pliki javascript wymienione w plikach html nie są już uruchamiane w WebView. Podczas uruchamiania programu ze starszą wersją nadal działa. Nie znalazłem informacji, że ta zmiana w zachowaniu była zamierzona przez Oracle.

Jako obejście można też umieścić kod javascript bezpośrednio do pliku HTML lub obciążenia w java zawartość pliku JavaScript na łańcuch i wykonać go z webView.getEngine().executeScript()

+3

Tak, nie mogłem znaleźć żadnej informacji. Moje obejście polega na umieszczeniu zastępczego {pliku javascript}, przeczytaniu kodu HTML w łańcuchu, a następnie zamianie ciągu znaków na symbol zastępczy za pomocą 'getResource (" javascript.js "). ToURI()' lub tak. Brzydki, ale przynajmniej działa. –

+0

W rzeczywistości jest to rozwiązanie, które również wykorzystałem. Nie jest ładna, ale działa na razie. – gogotox

+1

Dzięki, miał ten sam situtaion, poprawka nadejdzie w 8u72: https://bugs.openjdk.java.net/browse/JDK-8136466 – grudolf