6

有人可以就如何从 loadContent() 将以下内容加载到 webviewer 提供一些建议吗?

http://jsbin.com/aqupun/6/edit

我试图做这样的事情,但它似乎不起作用。谢谢!

    Scanner sc1 = new Scanner(new File("src/web/web.html"));
    String webStr = sc1.useDelimiter("\\Z").next();

    Scanner sc2 = new Scanner(new File("src/web/data.js"));
    String dataStr = sc2.useDelimiter("\\Z").next();

    Scanner sc3 = new Scanner(new File("src/web/cytoscape.min.js"));
    String cytoStr = sc3.useDelimiter("\\Z").next();

    Scanner sc4 = new Scanner(new File("src/web/jquery.min.js"));
    String jqueryStr = sc4.useDelimiter("\\Z").next();

    webEngine.loadContent(cytoStr, "text/javascript");
    webEngine.loadContent(jqueryStr, "text/javascript");
    webEngine.loadContent(dataStr, "text/javascript");
    webEngine.loadContent(webStr, "text/html");
4

3 回答 3

3

我刚刚发现<base>在 HTML 中使用标签也可以解决问题:

<html>
    <head>
        <title>The slash at the end of the href is important!</title>
        <base href="file:///absolute/path/to/your/docroot/" />
    </head>
    <body>
        <img src="image.png"/>
    </body>
</html>

如果您通过加载上述代码,engine.loadContent(String)则将image.png/absolute/path/to/your/docroot/image.png.

如果您需要加载多个资源,则此方法更容易,因为您只需在单个位置指定绝对路径。

这已经用WebViewJava 8u25 进行了测试。

于 2014-10-21T13:56:09.513 回答
3

你首先需要把这三个文件放到同级的资源或者硬盘上。

要直接从内存中加载内容,您可以使用

webView.getEngine().loadContent("your html")

来自JavaDoc

public void loadContent(String content)

直接加载给定的内容。当您在内存中编写内容或从无法通过 URL 访问的某些系统加载内容时,此方法很有用。

请注意,链接的资源应该可以通过它们的 url 获得,即在磁盘上或资源中。为了反映您的网络应用程序中的动态变化,我建议您从 JS 调用 Java。这可以通过在 JS 应用程序中提供 Java 对象来完成:JavaFX 和 WebView 内的 JavaScript 之间的通信,使用 JSObject

在这里你可以找到一个浏览器演示和一个简化的 WebView 组件:Java GUI to display pages and return HTML

于 2013-11-24T12:27:02.657 回答
0

您只需要load()使用WebEngine. 相关 CSS 和 JavaScript 的加载将由WebEngine.

这是我如何加载AceEditorWebView

在此处输入图像描述

执行此操作的代码只有两行:

engine = webView.getEngine();
engine.load("file:///home/littlejavachild/Downloads/AceEditor/ace-builds-master/MyTry.html");  

JavaScript 源代码和 CSS 的加载由引擎为我处理。

该方法的文档在这里:

public void load(java.lang.String url)

将网页加载到此引擎中。该方法启动异步加载并立即返回。

参数: url - 要加载的网页的 URL

于 2013-11-23T17:39:21.580 回答