在 Java 中使用 IE/Chrome HTML-Renderer 或使用 JavaScript 存储文件
Using the IE/Chrome HTML-Renderer in Java OR storing files with JavaScript
我目前正在尝试编写一个小应用程序(不需要 Internet 访问 - 所以它实际上只是一个本地应用程序。),应该保持非常简单。我考虑过简单地使用 HTML(+CSS) 和一些 JavaScript,因为这在很大程度上就足够了,但我还需要访问文件系统才能存储我的数据在某个文件中,这在 javascript 中是不可能的(是的,我浏览了很多关于 JavaScript 和文件系统的帖子,但我不喜欢任何解决方案。)
所以我想到了另一种方法:有一些很好的库叫做 HtmlUnit,它可以让我基本上模拟我的 JavaScript,同时拥有 Java FileAccess - 但后来我将无法呈现它。
那么,两个问题:
是否可以将 Java 脚本文件声明为 "local" 从而获得文件系统权限?
许多应用程序(游戏等)在内部使用 Internet Explorer。是否可以在 Java 中使用 IE(甚至 Chromes/Firefoxes/Whatevers)渲染器?我不喜欢到目前为止发现的任何渲染库 - 或者只是能够将 js+html 代码作为本地应用程序执行?
我试用了 .HTA,但我非常讨厌它们。只是太……老了。那里没有什么是可能的。如果能得到一个看起来像 chrome 的简单 html/js 应用程序,但它是一个本地应用程序,那就太棒了。
Is it possible to somewhat declare a JavaScript File as "local" and thus gaining file-system permissions?
Firefox 扩展将拥有 access the file system 的必要权限。
Is it possible to use IEs (Or even Chromes/Firefoxes/Whatevers) renderer in Java?
是的,例如与 SWT Browser Widget or JavaFX WebView
我想知道这对你来说是否足够(使用 HTML5 存储功能):
function saveFile(localstorage) {
localstorage.root.getFile("info.txt", {create: true}, function(theFile) {
theFile.createWriter(function(theContent) {
var blob = new Blob(["Lorem Ipsum"], {type: "text/plain"});
theContent.write(blob);
});
});
}
浏览器会询问用户在本地系统中存储文件的权限。
问答
- Is it possible to somewhat declare a JavaScript File as "local" and thus gaining file-system permissions?
不,只能通过 ActiveX / plugins (e.g. Java / browser addon).
其他人可能会建议Java脚本具有数据存储或文件系统。
但它们不是本地文件系统访问权限,您不能用它们读取或写入真实文件。
- 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?
JavaFX's WebView use WebKit as renderer。
Webkit 不是一个完整的浏览器,所以它的功能较少,例如no localStorage,但你可以用 Java 代码替换其中的大部分。
SWT Browser, as mentioned by another answer, also works as renderer but will make it difficult 给你打包成单个文件,加上它取决于客户端做 install/update 浏览器。
- 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 禁止文件访问。
建议
根据我的经验,唯一可行的解决方案是:
- ActiveX HTML 应用
- 本机程序,例如Java jar 或.Net exe。 (或者打包成exe的jar)
- 具有定制浏览器和定制启动器的完整网络应用程序,例如在 USB 记忆棒/DVD/安装程序中
我都做了,我个人认为Jar/Exe是满足您要求的最平衡的解决方案。
这很可悲。如果 Metro 应用程序像 exe 一样易于部署,我建议改为使用它。
我目前正在尝试编写一个小应用程序(不需要 Internet 访问 - 所以它实际上只是一个本地应用程序。),应该保持非常简单。我考虑过简单地使用 HTML(+CSS) 和一些 JavaScript,因为这在很大程度上就足够了,但我还需要访问文件系统才能存储我的数据在某个文件中,这在 javascript 中是不可能的(是的,我浏览了很多关于 JavaScript 和文件系统的帖子,但我不喜欢任何解决方案。)
所以我想到了另一种方法:有一些很好的库叫做 HtmlUnit,它可以让我基本上模拟我的 JavaScript,同时拥有 Java FileAccess - 但后来我将无法呈现它。
那么,两个问题:
是否可以将 Java 脚本文件声明为 "local" 从而获得文件系统权限?
许多应用程序(游戏等)在内部使用 Internet Explorer。是否可以在 Java 中使用 IE(甚至 Chromes/Firefoxes/Whatevers)渲染器?我不喜欢到目前为止发现的任何渲染库 - 或者只是能够将 js+html 代码作为本地应用程序执行?
我试用了 .HTA,但我非常讨厌它们。只是太……老了。那里没有什么是可能的。如果能得到一个看起来像 chrome 的简单 html/js 应用程序,但它是一个本地应用程序,那就太棒了。
Is it possible to somewhat declare a JavaScript File as "local" and thus gaining file-system permissions?
Firefox 扩展将拥有 access the file system 的必要权限。
Is it possible to use IEs (Or even Chromes/Firefoxes/Whatevers) renderer in Java?
是的,例如与 SWT Browser Widget or JavaFX WebView
我想知道这对你来说是否足够(使用 HTML5 存储功能):
function saveFile(localstorage) {
localstorage.root.getFile("info.txt", {create: true}, function(theFile) {
theFile.createWriter(function(theContent) {
var blob = new Blob(["Lorem Ipsum"], {type: "text/plain"});
theContent.write(blob);
});
});
}
浏览器会询问用户在本地系统中存储文件的权限。
问答
- Is it possible to somewhat declare a JavaScript File as "local" and thus gaining file-system permissions?
不,只能通过 ActiveX / plugins (e.g. Java / browser addon).
其他人可能会建议Java脚本具有数据存储或文件系统。 但它们不是本地文件系统访问权限,您不能用它们读取或写入真实文件。
- 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?
JavaFX's WebView use WebKit as renderer。 Webkit 不是一个完整的浏览器,所以它的功能较少,例如no localStorage,但你可以用 Java 代码替换其中的大部分。
SWT Browser, as mentioned by another answer, also works as renderer but will make it difficult 给你打包成单个文件,加上它取决于客户端做 install/update 浏览器。
- 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 禁止文件访问。
建议
根据我的经验,唯一可行的解决方案是:
- ActiveX HTML 应用
- 本机程序,例如Java jar 或.Net exe。 (或者打包成exe的jar)
- 具有定制浏览器和定制启动器的完整网络应用程序,例如在 USB 记忆棒/DVD/安装程序中
我都做了,我个人认为Jar/Exe是满足您要求的最平衡的解决方案。
这很可悲。如果 Metro 应用程序像 exe 一样易于部署,我建议改为使用它。