2015-09-06 12 views
5

は、Java 8u51までは、次のことがうまく働いた:がJava 8u60でのWebViewでローカルのJavaScriptファイルをロードする

  • は、WebViewのに
  • コールに含まれる機能を<script src="javascript.js"></script>
  • ロードこのHTMLファイルを含むHTMLファイルを持っていますしかし8u60に切り替えた後webView.getEngine().executeScript()

を使用してjavascript.jsで、それはもはや機能しません:

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

ファイルjavascript.jsは読み込まれなくなりました。 JavaScriptファイルがファイルシステム上にあるIDEから起動すると、が動作します。ただし、アプリケーションがパッケージ化されているためが動作しなくなるため、javascript.jsはJARファイル内にあります。

何が変わったのか、これをどのように修正することができますか?

+0

でそれを実行することができますいずれかの回避策として、それはdoesnの、JDK/JREのせいではありませんあなたのjsファイルを見つけることはできません(あなたはjarの横にそれを見つけて試してみるかもしれません)、私はあなたが目標のjsファイルのパスを間違って設定していると信じています –

+0

なぜ以前は動作しましたか? –

+0

Becasue IDEはjarファイルを生成せず、それを実行します。そのようにしていると、埋め込みjarリソースであるjavascriptファイルを指定する必要があります。 –

答えて

4

Java 8u60以降、HTMLファイルで参照されるローカルjavascriptファイルは、WebViewでもう実行されません。古いバージョンのプログラムを実行しても、それはまだ動作します。 この動作の変更がOracleによって意図されているという情報は見つかりませんでした。

あなたがHTMLファイルに直接javascriptのコードを配置し、またはJavaにおける負荷のJavaScriptファイルの内容を文字列にしてwebView.getEngine().executeScript()

+3

ええ、私も情報を見つけることができませんでした。私の回避策は、プレースホルダ{javascript-file}を使用し、HTMLを文字列に読み込んだ後、プレースホルダを 'getResource(" javascript.js ")。toURI()などで文字列置換します。醜いですが、少なくともそれは動作します。 –

+0

実際、これも私が使い終わった解決策です。それはかなりではありませんが、今のところうまくいきます。 – gogotox

+1

ありがとう、同じsitutaionを持っていた、修正は8u72に来ている:https://bugs.openjdk.java.net/browse/JDK-8136466 – grudolf

関連する問題