hta - Firefox、Chrome 中的等价物 - 这是旧技术吗?

Posted

技术标签:

【中文标题】hta - Firefox、Chrome 中的等价物 - 这是旧技术吗?【英文标题】:hta - Equivalents in Firefox, Chrome - Is this old technology? 【发布时间】:2012-05-24 02:25:57 【问题描述】:

我想将网页 html5/js 页面转换为桌面应用程序。他们可以在没有实时互联网连接的情况下在桌面上使用的东西。 (我不想重新编码我的 html5 或 js。)

如果最终用户安装了 Internet Explorer,我可以轻松地将其移植到 hta 文件中。但是,如果他们使用 Vista 或更高版本并卸载了 Internet Explorer(您可以这样做)怎么办?如果他们的主要浏览器是 Firefox 或 Chrome 怎么办?

我在四处寻找 Firefox,它似乎 Prism 是 hta 文件的替代品,但如果你去 Mozilla 的 Prism 页面,它会说这是一项不再被追求的技术。

所以我有几个问题:

    hta 文件是否仍然是 Internet Explorer 的现代技术,在 IE9、IE10 中仍然可以使用? 如果没有在 Windows(或其他操作系统)上安装 IE,hta 文件是否会在没有安全问题或本地访问问题的情况下自动启动 Firefox/Chrome? 我可以将一些 html5 的本地存储内容添加到我的 hta 文件中,并且它仍然可以在 IE、FF 和 Chrome 上运行吗? 如果这些东西不能在 FF 或 Chrome 上运行,他们是否有任何现代且不被弃用的技​​术替代品?

【问题讨论】:

HTA 只是 IE,没有其他浏览器会提供它们允许的附加功能/提升权限(如果您不需要这些功能,则不需要 HTA) Prism 是一个运行时环境,它不会消除对互联网连接的需求。您应该查看 Firefox 和 Chrome 的 HTML5 Offline Spec。 另外,Prism 确实打算成为 Adobe AIR 的公开竞争对手,所以您可能需要调查一下。 您可以尝试创建一个 MHTML 文件:en.wikipedia.org/wiki/MHTML 你提到你不想重写你的 HTML,所以大概这感觉就像一个网络应用程序无论如何。开发 HTA 的主要原因是本机应用程序权限(如文件系统),而不是缺少书签栏。如果您有一个现有的工作网络应用程序,并希望人们能够在离线时使用它,那么 robertc 上面链接的“离线规范”(有时也称为“应用程序缓存”)是专门为解决以下问题而设计的你在描述。另一个链接:html5rocks.com/en/tutorials/offline/whats-offline 【参考方案1】:

实际上 HTA 不是由 Internet Explorer 运行的。它们由安装在 Windows/System32 (Windows7) 中的 mshta.exe 运行。但是,HTA 使用 IE 的渲染引擎,没有 IE 就无法运行。它们也仅适用于 Windows 用户。

可以使用<meta http-equiv="x-ua-compatible" content="ie=9"> 添加对 HTML5 的支持。根据我自己的经验,还需要<!DOCTYPE html>

MSDN 中的更多信息:Introduction to HTAs

在 SO:HTA's; use other browser to host?

【讨论】:

谢谢 - 这完美地回答了我对 Windows 环境的问题。我会再等一两天来回答这个问题,看看是否有人可以回答非 Windows 环境。 我只是想指出,将 IE 条件 cmets 放在 周围可能还有其他标签(添加自定义类以解决我的 CSS 中的 IE7/8 怪癖)可以防止页面显示即使指定了正确的文档类型和与 x-ua 兼容的元标记,也处于 HTML5 模式。我花了一段时间才弄明白。这也适用于 X-UA-Compatible 标记 - 您不能将其包装在条件注释中以使您的 HTML 对其他浏览器“干净”。 @aphax 感谢您的评论。每一天都是为了学习……如果 Jon Ashman 决定使用 HTA,这可能也是有价值的信息。 HTA 需要 Trident,即 IE 的布局引擎,但我严重怀疑 HTA 是否需要 Internet Explorer 本身。 Trident 是操作系统不可或缺的一部分,即使卸载浏览器也无法删除。我计划在本月晚些时候退役一台笔记本电脑。完成后,我将卸载 IE,然后测试 HTA 并报告。 @gilly3 在没有 IE 的情况下测试是否成功?看到一些结果会很有趣。【参考方案2】:

1.hta 文件是否仍然是 Internet Explorer 的现代技术,仍然适用于 IE9、IE10?

很可能是的。底层技术基于将 IE 浏览器控件嵌入为 activex 对象。即使 mshta 不再随 windows 一起分发,仍然可以使用 c# 和浏览器控件创建副本。

2.如果没有在Windows(或其他操作系统)上安装IE,在没有安全问题或本地访问问题的情况下,hta文件会自动启动Firefox/Chrome吗?

不,虽然 .hta 扩展名可以与这些浏览器相关联,但它们都不支持 mshta 指令 - 结果是浏览器会提示您将文档另存为外部文件,例如 exe 或 zip 文件。

3.我可以在我的 hta 文件中添加一些 html5 的本地存储内容吗?它仍然可以在 IE、FF 和 Chrome 上运行吗?

是的,您可以添加对 html5 的支持,但同样只能在 IE 上使用。

4.如果这些东西不能在 FF 或 Chrome 上运行,它们是否有任何现代且不被弃用的技​​术替代品?

Adobe 生产了一款名为 Adob​​e AIR 的竞争产品 - http://www.adobe.com/products/air.html。该产品提供了 hta 中可用功能的有限交集。本地文件访问受限于特定路径,通常对父操作系统的访问受到很大限制。然而,它们确实在所有主要平台上运行,包括移动设备,因此它们可能是您正在寻找的技术。 AIR 使用 webkit 作为嵌入式浏览器引擎。

【讨论】:

【参考方案3】:

我不会尝试使用 .HTA 文件,我会使用 Node-Webkit。 Node-Webkit 将让您做与 .HTA 文件相同的事情,但 Node-Webkit 似乎更快并且得到更好的支持。 https://github.com/rogerwang/node-webkit; https://github.com/rogerwang/node-webkit/wiki/Manifest-format。此外,通过 Node-Webkit,您可以使用 node.js 并轻松地使您的程序也跨平台。

【讨论】:

【参考方案4】:

请看一下基于 v8 的电子

http://electron.atom.io

【讨论】:

【参考方案5】:

我想说 .hta 应用程序已经过时了,因为它们不支持现代设计标准。你仍然可以使用它们或使用另一个 HTML 编译器,比如 David Esperalta 的那个,它对于非常简单的应用程序来说已经足够了,但是它们都依赖于 IE,我们都知道它有多么有限和缓慢。

现代替代品:

NW.js(以前称为 node-webkit) electron 我个人使用并推荐。

上述两个选项均基于 Chromium(与 Chrome 相同)、Node.js 和 V8。它们支持 HTML5、CSS3 和最新的 javascript 引擎,包括最新的 ECMAScript 功能等等!

由于他们使用 node.js,您可以在您的 DOM 中使用它的任何 built-in libraries (like FileSystem) 或 any of npm packages!

npm 注册表托管超过 25 万个可重用代码包 — 世界上最大的代码注册表。

这两个选项都是免费且开源的但电子支持 ffmpeg 编解码器,无需下载或构建它们。

这两个选项现在都支持 ffmpeg。

您的应用将 100% 独立,您可以为 Windows、macOS 和 Linux 构建相同的应用。

electron 还可以提供简单的解决方案来自动编译和使用 CoffeeScript、Babel、LESS、SASS 等。

缺点:

• 由于没有运行时解决方案,您始终必须将整个内容与您的应用程序一起提供,并且您最终会得到一个相对较大的包。

• 某些应用程序的启动时间不太理想

• 尽管有一些方法可以让它变得更难,但是任何知道自己在做什么的人都可以使用您的代码。


2021 年更新

electron 和 nwjs 与以往一样可行,但如果您正在寻找更轻量级的 UI,我也推荐 Sciter.JS 它在最近的更新中取得了巨大的飞跃,并且它不会为您的应用程序提供整个浏览器,开发人员似乎致力于遵循最新的 HTML/CSS/JS 标准并添加一些不错的内容。它带有很好的样本集合,可以帮助您入门。和主要操作系统版本的预构建二进制文件。 需要注意的一件事是,如果这对您很重要,它会使用 QuickJS 而不是 Node.js。

我一直在密切关注它的发展,我建议尝试一下。

【讨论】:

【参考方案6】:

这个旧但仍然相关的问题的更新。

mhtml / mht,“MIME HTML”可能是一个简单的解决方案。来自:https://whatis.techtarget.com/fileformat/MHTML-MHTML-document-MIME

MHTML(MIME HTML 的缩写)是 Internet Explorer 保存的网页存档文件格式的文件扩展名。存档的网页是一个 MHTML 文档。 MHTML 保存网页内容并将外部资源(如图像、小程序、Flash 动画等)合并到 HTML 文档中。

在撰写本文时,我已经测试了对以下浏览器的原生支持:

是 Chrome 81.0.4044.138 是的 Opera 68.0.3618.104 没有 Firefox 76.0.1 没有 Safari 版本 13.1 (15609.1.20.111.8)

Chrome 在去年添加、删除和重新添加了对 mhtml 的支持,因此在那里的投资是不稳定的。 Safari 原生支持 MAFF,但不支持 mhtml Firefox 可以通过插件支持 mhtml。 其他浏览器未测试,但 MSIE 已支持它。

【讨论】:

【参考方案7】:

是的,.hta 是一个已弃用的功能,仅适用于 Windows 机器。然而,据我所知,它也是提供操作系统功能集成的唯一选项,不需要网络服务器,可以完全控制应用程序窗口的外观/感觉/位置,我最后一次检查(诚然是 2 年前)仍然在 Windows 10 中工作。

【讨论】:

以上是关于hta - Firefox、Chrome 中的等价物 - 这是旧技术吗?的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 和 Chrome 中的 CSS 行高不一样

Firefox 和 Chrome 中的输入高度差异

Firefox 和 Chrome 中的绝对定位问题

Chrome、Firefox 和 Explorer 中的图片、srcset 和 css

如何修复firefox和chrome中的空间?

Firefox 和 Chrome 中的 getUserMedia() 视频大小不同