在Java 8u60中的WebView中加载本地JavaScript文件

Mic*_*ung 5 java javafx-webengine

在Java 8u51之前,以下工作正常:

  • 有一个HTML文件包含 <script src="javascript.js"></script>
  • 将此HTML文件加载到WebView中
  • 调用javascript.jsusing中包含的函数webView.getEngine().executeScript()

切换到8u60后,它不再有效:

Exception in thread "JavaFX Application Thread" netscape.javascript.JSException: TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)

因此javascript.js不再加载该文件.从IDE启动时起作用,其中JavaScript文件位于文件系统上.但是,在应用程序打包时不再有效,因此javascript.js位于JAR文件中.

知道改变了什么以及如何解决这个问题?

gog*_*tox 5

从Java 8u60开始,html文件中引用的本地javascript文件不再在WebView中执行.使用旧版本运行程序时,它仍然有效.我没有发现Oracle的这种行为改变的信息.

作为一种解决方法,您可以将javascript代码直接放入HTML文件中,或者将java中javascript文件的内容加载到String中并使用 webView.getEngine().executeScript()

  • 是的我也找不到任何信息.我的解决办法是具有占位符{的JavaScript文件},读取HTML到一个字符串,然后然后字符串替换`的getResource("javascript.js")的占位符.toURI()`左右.丑陋但至少它有效. (3认同)