java - 在 Java 中使用 IE/Chrome HTML-Renderer 或使用 JavaScript 存储文件

标签 java javascript html google-chrome internet-explorer

我目前正在尝试编写一个小应用程序(不需要互联网访问 - 所以它实际上只是一个本地应用程序。),应该保持非常简单。我考虑过简单地使用 HTML(+CSS) 和一些 JavaScript,因为这在很大程度上就足够了,但我还需要访问文件系统以便将我的数据存储在某个文件中,这在javascript(是的,我浏览了很多关于 JavaScript 和文件系统的帖子,但我不喜欢其中的任何解决方案。)

所以我想到了另一种方法:有一些名为 HtmlUnit 的不错的库,它可以让我基本上模拟我的 JavaScript,同时拥有 Java FileAccess - 但我将无法呈现它。

那么,两个问题:

  1. 是否可以将 JavaScript 文件声明为“本地”文件并因此获得文件系统权限?

  2. 许多应用程序(游戏等)在内部使用 Internet Explorer。是否可以在 Java 中使用 IE(甚至 Chromes/Firefoxes/Whatevers)渲染器?我不喜欢到目前为止发现的任何渲染库 - 或者只是能够将 js+html 代码作为本地应用程序执行?

  3. 我试用了 .HTA,但我非常讨厌它们。只是太……老了。那里没有什么是可能的。获得一个看起来像 chrome 中的简单 html/js 应用程序,但它是一个本地应用程序,这将是非常棒的。

最佳答案

问答

  1. Is it possible to somewhat declare a JavaScript File as "local" and thus gaining file-system permissions?

不,只能通过 ActiveX 来实现/插件(例如 Java/browser addon )。

其他人可能会建议 JavaScript 具有数据存储或文件系统。 但它们不是本地文件系统访问权限,您不能用它们读取或写入真实文件。

  1. Many applications (Games etc) internally use Internet Explorer. Is it possible to use IEs (Or even Chromes/Firefoxes/Whatevers) renderer in Java? I don't like any of the rendering-libraries I found until now - Or just simply be able to execute js+html code as a local application?

JavaFXWebView use WebKit as renderer . Webkit 不是一个完整的浏览器,所以它的功能较少,例如no localStorage ,但您可以将其中的大部分替换为 Java 代码。

SWT Browser ,如另一个答案所述,也可用作渲染器,但会 make it difficult为您打包为单个文件,加上它取决于客户端来安装/更新浏览器。

  1. I tried out .HTAs, and I absolutly hate them. It's just so... old. Nothing is possible there. It would be awesome to get a simple html/js application looking like in chrome, but being a local application.

使用内联代码和data uri 可以将所有资源嵌入到一个HTML 文件中。 . 这是我的一个项目:[source files] [single file deployable] .

无论如何,大多数浏览器不允许文件写入,您无疑已经知道,而 Chrome 是 especially hostile反对文件访问。


建议

根据我的经验,唯一可行的解​​决方案是:

  1. ActiveX HTML 应用程序
  2. native 程序,例如 Java jar 或 .Net exe。 (或者打包成exe的jar)
  3. 带有定制浏览器和定制启动器的完整网络应用程序,例如在 USB 内存棒/DVD/安装程序中

我都做了,我个人认为 Jar/Exe 是满足您要求的最平衡的解决方案。

这是悲伤的。如果 Metro 应用程序像 exe 一样易于部署,我会建议您改用它。

关于java - 在 Java 中使用 IE/Chrome HTML-Renderer 或使用 JavaScript 存储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28287833/

相关文章:

java - 如何将模拟注入(inject)到具有 1 个带参数的构造函数的类中?

javascript - 基于屏幕调整大小的 vanilla javascript 函数

javascript - 如何从 createElement ('img' 获取 X)

javascript - 宣布井字游戏的赢家

java - 如何使用@produces 注解?

java - 对于 2 个数字,如何测试一个是否是另一个的整数幂?

模拟简单数据库表的java类

javascript - 正则表达式查找最小可能的匹配

javascript - 从 Javascript 与 paper.js paperscript 交互?

html - Div 未正确 float 。我不确定我错过了什么