如果微软的方法使用IE作为HTA的本地主机,那么我可以使用任何其他浏览器吗?
你不能.
有一个名为XULRunner的类似Mozilla项目,但HTA仅适用于Internet Explorer - 这两种技术不兼容.
为了明确这一点:HTA 可能不适用于任何不是IE的东西.是的,HTA是窗口中的浏览器控件,但它也具有正常的应用程序权限(即文件系统访问,注册表,arbirary代码执行等).在浏览器中运行时,这些权限被拒绝(出于好的理由 - 您不希望任何网页只读取您的文件).
因此,在浏览器中启动HTA将起作用,但与本地系统的任何交互都将失败,这会否定整个想法.在XULRunner中启动HTA也会失败,因为XULRunner使用完全不同的API.
唯一可能有效的方案是:一个不使用任何特定于HTA或特定于XULRunner的API的webapp(即行为类似于普通的浏览器应用程序).在这种情况下,您的应用程序可能适用于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出现一些问题后,我得到了那些浏览器的工作. (在所有情况下,这些都使用与 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 Application Host).最初那不起作用.我选择"其他"手工挑选相同的应用程序.虽然我有两个完全相同的条目,但这很有用!您的计算机上需要mshta.exe才能运行任何浏览器.我假设安装mshta的正常方法是使用IE.(mshta本质上是IE的修改版本,可能不是当前版本!)
Firefox开发人员将此标记为将IE从企业中移除的战略性努力.它们的实现(和Opera)强制你使用完全限定的URI,但除此之外,hta的工作正如预期的那样.
Firefox似乎缓存旧版本的hta,并没有下载新版本,虽然它似乎下载了一些东西!您可能需要在开发期间清除缓存.
我第一次尝试使用Chrome是不成功的.进一步的调查显示,Chrome没有基于文件扩展名调用其他进程的本机界面.