如果微软使用 IE 作为 HTA 的本地主机的方法,我可以使用任何其他浏览器来代替吗?
5 回答
你不能。
有一个名为XULRunner的类似 Mozilla 项目,但 HTA 仅适用于 Internet Explorer - 这两种技术不兼容。
为了明确这一点:HTA可能无法在任何非 IE 中工作。是的,HTA 是一个窗口中的浏览器控件,但它也具有正常的应用程序权限(即文件系统访问、注册表、任意代码执行等)。在浏览器中运行时,这些权限被拒绝(有充分的理由 - 您不希望任何网页都可以读取您的文件)。
因此,在浏览器中启动 HTA 会起作用,但与本地系统的任何交互都会失败,这否定了整个想法。在 XULRunner 中启动 HTA 也会失败,因为 XULRunner 使用完全不同的 API。
唯一可能起作用的场景是:一个不使用任何 HTA 特定或 XULRunner 特定 API 的 web 应用程序(即表现得像一个普通的浏览器应用程序)。在这种情况下,您的应用程序可以与 HTA、XULRunner 以及任何浏览器一起使用。顺便说一句,这将带走使用 HTA 的任何优势,并由于更高的权限而引入大量安全漏洞;为此,您最好使用 Google Chrome 或 Mozilla Prism。
(一段时间以来,我们一直在努力寻找跨浏览器的解决方案,而 HTA 肯定不是)
我正在处理从各种浏览器运行 hta 的相关任务。我已经将我的发现放在这里,以供其他任何试图这样做并找到这个问题的人使用。
您可以使用 IE 使用的相同 mshta 可执行文件从多个浏览器运行 hta。 您的 hta 代码中需要完全限定的 URI,这在 IE 中不需要。
今天(2011-02-01)我尝试使用来自Firefox (3.6.13)、Opera 11和Safari for Windows 5.0.3的 hta 。
在 Firefox 中出现一些初期问题后,我让 hta 可以从这些浏览器中工作。 (在所有情况下,这些都使用 IE 使用的相同 mshta 可执行文件。这不是 hta 在其他浏览器中运行,而是在其他浏览器中运行 hta 。这可能适合您的目的。)
hta 在我的机器上启动了桌面应用程序(就像它从 IE 一样)。
体验并不完美。对于 IE,我在 hta 中设置了根相对路径。对于其他浏览器,您不能这样做。您需要为图像、引用的 hta 和图标等内容设置完全限定的 URI。
因此,经过一些编辑后,我可以在 4 个浏览器(IE 8、FF 3、Opera 11 和 Safari 5 (Windows))上运行 hta。
(快速快照。我正在从本地计算机上的 Web 服务器运行 hta。(我没有计划从远程站点运行它们。)这使我的工作流程可以更顺畅地从浏览器转到桌面。hta 启动了执行诸如编辑网页(包括 hta 本身)之类的本地应用程序,验证这些页面并启动 IDE。弥合浏览器和桌面应用程序之间的差距。一直是一种解放体验。我推荐它!)
笔记:
- Firefox开发团队有关于启用 hta 的说明,这鼓励我在最初失败后继续。
- 为了在Firefox 配置中实现这一点,我将 HTML 应用程序设置为在mshta.exe (称为 Microsoft HTML 应用程序主机,在组合框中)下运行。最初那没有用。我选择了“其他”,手动选择了相同的应用程序。这行得通,虽然我有两个相同的条目!您需要在您的机器上运行 mshta.exe 才能为任何浏览器运行。我假设安装 mshta 的正常方法是使用 IE。(mshta 本质上是 IE 的修改版本,可能不是当前版本!)
- Firefox 开发人员将此标记为将 IE 从企业中移除的战略努力。他们的实现(和 Opera 的)强制您使用完全限定的 URI,但除此之外,hta 的工作如预期。
- Firefox 似乎缓存了 hta 的旧版本,并且不下载新版本,尽管它似乎下载了一些东西!您可能需要在开发过程中清除缓存。
- 我第一次尝试使用 Chrome 没有成功。进一步的调查表明,Chrome 没有根据文件扩展名调用其他进程的本机接口。
与其说 IE 托管任何东西,不如说 mshta.exe 托管它与 IE 共享的组件。MSHTA 是一个脚本宿主,就像 CScript 和 WScript 一样。虽然 IE 也是一个脚本宿主(在最严格的意义上),但它的主要目的是成为一个 Web 浏览器。
前面提到的 Mozilla 项目是我发现的最接近的替代方案,它基于浏览器的内部结构。
Windows 也存在其他脚本宿主。其中之一是NS Basic/Desktop,但它基于标准的 Windows 控件,而不是浏览器呈现和 HTML DOM。
需要明确的是:真正呈现网页的不是 IE 也不是 MSHTMA。渲染的东西部分内置在操作系统中。因此,诸如 Active Desktop(有人记得 XP 的东西吗?)或 .HTA 或 .CHM 之类的东西在没有 IE 的情况下也可以工作。这与识别某些 HTML 事物的方式相同。
我相信 Internet Explorer 托管 HTA 应用程序是有效的,因为他们的 HTA 主机已注册以处理扩展。如果确实如此,那么理论上可以使用另一个主机
为了完整起见,我应该指出我没有开发 HTA 应用程序的经验,我的回答是基于我对 Windows 操作系统的理解