用HTA来自定义你的Web应用程序
如果你搭上Web的彩车已经有一段时间了,那么你一定会很欣赏Web开发为创建简单的n层应用程序所提供的便利。但是,如果想要创建一个更加强大的基于Web的应用程序(它整合了客户端的组件),那么你就有可能会被各台机器的安全设置以及浏览器菜单条和工具条的配置而吓倒。
绕过这个问题的一个理想方法是提供一个“浏览器”,它能够推倒安全这堵墙,并能够让你的主页内置进各种功能。幸运的是,Internet Explorer 5.0+允许你通过HTML应用程序(HTA)来实现这一点。
HTA事实上就带有.hta扩展名和特殊标签的Web页面,这个特殊的标签<HTA:APPLICATION>允许你控制这个应用程序的用户界面(UI)。<HTA:APPLICATION>标签位于<HEAD>标签里,它能够允许你控制下面这样的事情,诸如是否在所含的窗口里显示一个标题栏,或者显示最大最小化按钮。
<HTA:APPLICATION>标签还让你能够访问客户的机器而不用担心安全的限制。当你需要在客户端创建被脚本标记为不安全的组件时,它就很有用处了;因此,你就能够避开安全错误以及令人讨厌的弹出窗口。在尝试运用HTA这种方式之前,你应该消除掉应用这种方法可能带来的任何安全风险。
下面就是我正在处理的一种状况:我有一个第三方的Web应用程序放在服务器上运行,它允许同原有的一个数据库系统进行通信。在某一台工作站上,我需要使用这个Web应用程序里的信息来创建一个条形码的标签。为了把条形码的信息送到打印机去,我需要使用MSComm组件向条形码打印机写入串行数据。(如何使用MSComm组件的细节不是本文所涉及的范围。)
为了使用这个组件,我在自己指定了组件CLASSID的HTML页面里加入了一个OBJECT标签。在普通的Web页面里,一旦我尝试使用这个组件,其结果就要依赖于ActiveX对象的三个设置项:禁止(Disable)、提示(Prompt),或者允许(Enable)。如果设置是“禁止”,那么就完全无法访问到完成这项任务所需要的组件的属性。如果用户选择“提示”,那么用户就有可能选择进行错误的动作——也就说,你可以能会得到那些令人讨厌的弹出式窗口。如果设置是“允许”,那么运行这个ActiveX组件不会碰到问题;但是,你有可能会碰到其他页面上不安全组件所带来的安全风险。
所以,如果我能够解决这些安全问题,我就应该能够运行这些组件。这就是为什么会用到HTA的原因。我可以创建这个Web页面,并添加被脚本标记为不安全的组件。我还可以控制所含窗口的一些属性。在本例中,所含窗口会作为一个常规对话框出现,它带有最大最小化按纽以及一个含有HTA标题的标题栏。我还希望窗口的状态是最大化的,并含有一个工具条的按钮。我甚至为这个应用程序提供了一个名字。下面这个<HTA:APPLICATION>的例子显示了应该如何控制这些属性:
<HEAD>
<TITLE>Test HTA</TITLE>
<HTA:APPLICATION ID="testHTA" APPLICATIONNAME="Test HTA" BORDER="dialog"
CAPTION="yes" SHOWINTASKBAR="yes" SYSMENU="yes" WINDOWSTATE="maximize">
</HEAD>
工具栏、地址栏,以及菜单栏都不会像在IE里的那样,它们在这个窗口里没有被显示出来。这就给予你对界面设计更多的控制权。通过了解IE 5.0+的强大功能,你能够使用简单的Web技术创造功能强大的应用程序。
要了解更多关于HTA的信息,请访问微软的Web网站。