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

20

我想将一个网页的html5/js页面转换为桌面应用程序,让他们可以在没有网络连接的情况下在桌面上使用。(我不想重新编写我的html5或js代码。)

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

我在搜索Firefox时,似乎Prism是hta文件的替代品,但如果您访问Mozilla的Prism页面,它说这是一种不再追求的技术。

所以我有几个问题:

  1. hta文件是否仍然是Internet Explorer的现代技术,它仍将在IE9、IE10中运行?
  2. 如果在Windows (或其他操作系统)上没有安装IE,ht文件是否会自动启动Firefox/Chrome,而无需考虑安全问题或本地访问问题?
  3. 我能否将html5的本地存储功能添加到我的hta文件中,它在IE、FF和Chrome上仍然有效吗?
  4. 如果这些东西在FF或Chrome上不起作用,它们是否有任何现代且不被弃用的替代技术?

2
HTA只支持IE浏览器,其他任何浏览器都无法提供它们所允许的额外功能/提升的特权(如果您不需要这些功能,则不需要HTA)。 - Alex K.
Prism是一个运行时环境,它不会消除对互联网连接的需求。您应该查看Firefox和Chrome的HTML5离线规范。 - robertc
你可以尝试创建一个MHTML文件:http://en.wikipedia.org/wiki/MHTML - Tyilo
  1. 我不知道 .hta 是什么,我使用 Linux - 它能在上面工作吗?
  2. 目前还没有,但有关于那方面的计划。
  3. 为什么安装整个应用程序比安装插件更好?
- robertc
1
你提到你不想重写你的HTML,所以这可能会感觉像一个Web应用程序。开发HTA的主要原因是本地应用程序权限(如文件系统),而不是缺少书签栏。如果您有一个现有的工作Web应用程序,并希望人们在离线时能够使用它,则robertc上面链接的“离线规范”(有时也称为“应用程序缓存”)专门为您描述的确切问题而设计。另一个链接:http://www.html5rocks.com/en/tutorials/offline/whats-offline/ - GrandOpener
显示剩余2条评论
7个回答

16

实际上,HTA不是由Internet Explorer运行的,而是由mshta.exe运行的,它安装在Windows / System32(Windows7)中。但是,HTA使用IE的渲染引擎,并且不能在没有IE的情况下运行。此外,它们仅适用于Windows用户。

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

更多信息请参见MSDN:HTAs简介

在SO上:HTA:使用其他浏览器托管?


1
我只想指出,在<html>标签和其他标签周围放置IE条件注释(以添加自定义类来解决CSS中的IE7/8怪异行为)可能会防止页面在指定正确的doctype和x-ua-compatible meta标签的情况下以HTML5模式显示。我花了一段时间才弄清楚这个问题。这也适用于X-UA-Compatible标签 - 你不能将其包含在条件注释中,以使你的HTML对其他浏览器“干净”。 - aphax
@aphax 感谢您的评论。每一天都是学习的机会... 如果Jon Ashman决定使用HTA,这可能对他也是有价值的信息。 - Teemu
HTA需要Trident,即IE的布局引擎,但我严重怀疑HTA需要Internet Explorer本身。Trident是操作系统的一部分,无法删除,即使卸载了浏览器也不行。我计划在本月晚些时候退役一台笔记本电脑。完成后,我将卸载IE,然后测试一个HTA并报告结果。 - gilly3
@gilly3 有没有在IE之外进行测试成功的案例?看到一些结果会很有趣。 - Teemu
1
“...它不能在没有IE的情况下运行”这个说法是错误的。请参考Wikipedia页面:HTA依赖于Trident(MSHTML)浏览器引擎,该引擎由Internet Explorer使用,但不依赖于Internet Explorer应用程序本身。如果用户通过控制面板从Windows中删除Internet Explorer,则MSHTML引擎仍然存在,HTA继续工作。HTA在Windows 11中也可以继续工作。 - s.ouchene
显示剩余3条评论

10
我会说,.hta 应用程序已经过时了,因为它们不支持现代设计标准。你仍然可以使用它们或者使用其他 HTML 编译器,比如 David Esperalta 的那个,它足够好用于非常简单的应用程序,但是它们都依赖于 IE,我们都知道它有多么的受限和缓慢。
现代替代方案:
- NW.js(之前称为 node-webkit) - electron,我个人使用并推荐。
这两个选项都基于 Chromium(与 Chrome 相同),Node.js 和 V8。它们支持 HTML5,CSS3 和最新的 JavaScript 引擎,包括最新的 ECMAScript 特性及更高版本!

由于它们使用node.js,因此您可以在DOM中使用其内置库(如FileSystem)npm软件包之一!

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

两种选项都是免费和开源的,但electron支持ffmpeg编解码器而无需下载或构建它们。

  • 现在两种选项都支持ffmpeg。

您的应用程序将完全独立,您可以为Windows、macOS和Linux构建相同的应用程序。

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

缺点:

• 您始终需要随应用程序一起发送整个东西,因为没有运行时解决方案,这将导致一个相对较大的包。

• 对于某些应用程序来说,启动时间不太理想。

•尽管有一些方法可以增加难度,但只要有一定的编程基础,任何人都可以获取您的代码。

2021 更新

Electron 和 NW.js 仍然是可行的,但如果您正在寻找更轻量级的用户界面,我还推荐 Sciter.JS。它在最近的更新中有了很大的进步,并且不会随应用程序一起发布整个浏览器,开发人员似乎致力于遵循最新的 HTML/CSS/JS 标准并添加了一些不错的功能。它附带了良好的示例集以帮助您入门,并提供主要操作系统版本的预构建二进制文件。 需要注意的一点是它使用 QuickJS 而不是 Node.js,如果这对您很重要。

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


3

3

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生产了一个竞争产品叫做Adobe AIR - http://www.adobe.com/products/air.html。该产品提供了hta可用功能的有限交集。本地文件访问仅限于特定路径,并且通常对父操作系统的访问非常受限制。但是,它们在所有主要平台上运行,包括移动设备,因此它们可能是您寻找的技术。AIR使用WebKit作为嵌入式浏览器引擎。


2

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


0

0

这是一篇旧的但仍然相关的问题更新。

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

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

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

  • YES Chrome 81.0.4044.138
  • YES Opera 68.0.3618.104
  • NO Firefox 76.0.1
  • NO Safari Version 13.1 (15609.1.20.111.8)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接