【发布时间】:2010-11-02 19:45:52
【问题描述】:
如果微软使用 IE 作为 HTA 的本地主机的方法,我可以使用任何其他浏览器代替吗?
【问题讨论】:
标签: html internet-explorer browser hta
如果微软使用 IE 作为 HTA 的本地主机的方法,我可以使用任何其他浏览器代替吗?
【问题讨论】:
标签: html internet-explorer browser hta
你不能。
有一个类似的 Mozilla 项目,名为 XULRunner,但 HTA 仅适用于 Internet Explorer - 这两种技术不兼容。
明确一点:HTA 可能无法在任何非 IE 中工作。是的,HTA 是一个窗口中的浏览器控件,但它也具有正常的应用程序权限(即文件系统访问、注册表、任意代码执行等)。在浏览器中运行时,这些权限会被拒绝(有充分的理由 - 您不希望任何网页都可以读取您的文件)。
因此,在浏览器中启动 HTA 是可行的,但与本地系统的任何交互都会失败,这否定了整个想法。在 XULRunner 中启动 HTA 也会失败,因为 XULRunner 使用完全不同的 API。
唯一可能起作用的场景是:一个不使用任何 HTA 特定或 XULRunner 特定 API 的 web 应用程序(即表现得像一个普通的浏览器应用程序)。在这种情况下,您的应用程序可以与 HTA、XULRunner 以及任何浏览器一起使用。顺便说一句,这将带走使用 HTA 的任何优势,并由于更高的权限而引入大量安全漏洞;为此,您最好使用 Google Chrome 或 Mozilla Prism。
(我们一直在努力寻找跨浏览器的解决方案,HTA肯定不是)
【讨论】:
if (navigator.appName == "Microsoft Internet Explorer"))。在 else 语句中,它可以显示一条错误消息,例如“您只能在应用程序作为 HTA 运行时使用此功能。”。在这种情况下,该应用程序可以与 HTA 以及任何其他浏览器一起使用,尽管它的某些功能无法使用。
<hta:application> 元素的 commandLine 属性。如果应用程序使用 mshta.exe 运行,则该属性将为您提供一个包含应用程序命令行的字符串。否则,它将为您提供 undefined 的值。
我正在处理从各种浏览器运行 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 的 from 其他浏览器。这可能适合您的目的。)
hta 在我的机器上启动了桌面应用程序(就像它从 IE 一样)。
体验并不完美。对于 IE,我在 hta 中设置了根相对路径。对于其他浏览器,您不能这样做。您需要为图像、引用的 hta 和图标等内容设置完全限定的 URI。
所以经过一些编辑后,我可以在 4 个浏览器(IE 8、FF 3、Opera 11 和 Safari 5 (Windows))上运行 hta。
(快速快照。我正在从本地计算机上的 Web 服务器运行 hta。(我没有计划从远程站点运行它们。)这允许我的工作流程从浏览器到桌面更多顺利。hta 启动了本地应用程序,这些应用程序执行诸如编辑网页(包括 hta 本身)之类的操作,验证这些页面并启动 IDE。弥合浏览器和桌面应用程序之间的差距。一直是一种解放体验。我推荐它!)
注意事项:
【讨论】:
与其说 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 操作系统的理解
【讨论】: