【问题标题】:Is there an HTA-like solution for modern web apps?现代 Web 应用程序是否有类似 HTA 的解决方案?
【发布时间】:2023-04-07 02:01:01
【问题描述】:

我一直在使用 HTML、CSS 和 JS 开发应用程序,并使用 Google Chrome 的应用程序模式命令行参数。它工作得很好,但我希望能够使用本地文件系统无需用户手动输入。也就是说,如果我想直接访问一个文件,我希望它自动完成,而不需要用户加载文件。

一个选项是禁用网络安全,我没有这样做,因为需要正常使用谷歌浏览器。我也无法使用命令行参数来创建单独的 Chrome 实例。

我尝试使用 HTA,但任何将代码移植到 HTA 的尝试都以令人头疼的方式结束。此外,它似乎并不享受 Blink/Webkit 授予的特权。

我研究了 Electron 和其他类似平台,它需要安装一些东西,由于计算机设置,这是不行的。

是否有任何具有便携式应用程序的解决方案,可以将其放入带有 HTML 文档(例如,标记为 index.html 或 main.html)的文件夹中,并在打开浏览器时直接打开该文件而无需配置什么?一种基于铬的准系统浏览器,只打开一个文件,允许使用 HTML、JS、CSS 以及本地文件访问?有点像 HTA,但很现代?

【问题讨论】:

  • 你能用require吗?
  • @NikosM。假设您指的是 RequireJS,我不太确定这将如何解决我的问题。我不需要加载模块。我需要一个现代解决方案,它提供近乎简单的 HTA(我可以将一个 html 文件重命名为 HTA)和 Electron 的现代风格,而无需安装程序或成熟的开发环境。
  • 您所要求的非常可取,但不存在。当您测试 HTA 时,我们是否知道它默认以 IE 5 模式运行,如果您声明 doctype,它会以 IE 7 模式运行?您可以在 IE 11 模式下运行以更接近现代浏览器功能。请参阅我在此处发布的示例:*.com/questions/27704801/…
  • @LesFerch 我试过<meta http-equiv="X-UA-Compatible" content="IE=">,其中IE = 911edge。这一切都会引发我需要弄清楚的各种错误,而且它似乎越走越远,我修复的东西越多。

标签: javascript html web-applications localhost hta


【解决方案1】:

好消息是它确实存在,但不像 HTA 那样“开箱即用”。

我的团队已从 HTA 迁移到 WebView2。

总体方法是使用 WebView2 浏览器构建程序(您基本上是在构建自己的 HTA 类浏览器)。您的 javascript 代码可以与程序来回通信,而程序又可以完全访问本地资源。

WebView2 是 Microsoft Edge Chromium 浏览器,因此您可以获得最新的 Web 技术和布局(对于 HTA 开发人员来说是一个很大的痛苦)。包含 WebView2 控件的程序可以完全访问本地文件、比例尺、打印机(没有弹出对话框)。

该方法具有 HTA 的所有优点(html/javascript 编程、本地文件访问、基于 Web 的部署等),以及现代浏览器的所有布局和其他优点。

您将构建的程序非常小,尤其是与 Electron 等类似解决方案的巨大运行时间相比。

Rick Strahl 有一篇关于 WebView2 的优秀文章,以及构建我所描述的程序的技巧。他对如何为其构建安装程序提出了很好的建议,包括“Evergreen”,它使 WebView2 与最新的浏览器技术保持同步。

微软在此介绍该技术。 https://docs.microsoft.com/en-us/microsoft-edge/webview2/

【讨论】:

  • 你有任何示例代码可以分享吗?
  • 您说的是入门级更高的解决方案,您需要构建一个原生应用程序以使用WebView2,而 HTA 使用简单的脚本和 HTML。但这确实是我们现在所处的位置,市场上没有像 HTA 这样简单的东西。本质上,此时您必须构建自己的 HTA 包装器。
  • 是的,这就是我所知道的情况。如果没有将 WebView2 捆绑到本机程序中,我还没有找到类似 .HTA 的东西。如果你真的需要这项技术,这不是一个大项目,使用我提供的链接。
  • 是的,这基本上使我的项目的快速解决方案彻底失败。但是,我可以尝试在家里学习它并创建自己的“HTA-like”解决方案,正如我所提到的,将 html 文件放在“浏览器”的目录中,然后让该浏览器成为应用程序的启动器。只需让它查找 index.html 或 main.html 之类的文件。什么的。
  • 嘿,所以我决定创建这个问题的解决方案,虽然我有点难过,因为我没有真正使用过表单和 VS2019。你有能力并且愿意帮助我吗?我主要是一个网络开发人员,我绝对可以使用帮助。如果是这样,与我保持联系的最佳方式是什么? :O
最近更新 更多