如何从loadContent()加载html和javascript进入webengine?
有人可以提供一些关于如何从loadContent()加载到webviewer的建议吗?
我试图做这样的事情,但似乎没有用。 谢谢!
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");
首先需要将这三个文件放在同一级别或硬盘驱动器上的资源中。
要直接从内存加载内容,您可以使用
webView.getEngine().loadContent("your html")
来自JavaDoc :
public void loadContent(String content)
直接加载给定内容。 当您在内存中编写内容或从某些无法通过URL访问的系统加载内容时,此方法很有用。
请注意,链接的资源应该由他们的URL提供,即在磁盘或资源上。 为了反映您的Web应用程序中的动态更改,我建议您从JS调用Java。 这可以通过在JS应用程序中提供Java对象来完成: 使用JSObject在WebView中使用JavaFX和JavaScript之间的通信
在这里,您可以找到一个浏览器演示和一个简化的WebView组件: 用于显示网页和返回HTML的Java GUI 。
我刚刚发现在HTML中使用
标签也可以解决问题:
The slash at the end of the href is important!
如果通过engine.loadContent(String)
加载上述代码, engine.loadContent(String)
从/absolute/path/to/your/docroot/https://stackoverflow.com/questions/20164062/how-to-load-both-html-and-javascript-into-webengine-from-loadcontent/image.png
加载/absolute/path/to/your/docroot/https://stackoverflow.com/questions/20164062/how-to-load-both-html-and-javascript-into-webengine-from-loadcontent/image.png
。
如果需要加载多个资源,则此方法更容易,因为您只需在单个位置指定绝对路径。
这已经使用Java 8u25的WebView
进行了测试。
您只需要使用WebEngine
的load()
方法加载HTML页面。 WebEngine
将为您完成相关CSS和JavaScript的WebEngine
。
以下是我将AceEditor
加载到WebView
:
而这样做的代码只有两行:
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