"Programme wie für den Browser die am Client laufen", das ist im wesentlichen die Funktion von HTA Seiten. Dabei setzt dieser von Microsoft erfundene Standard auf HTML, JScript, CSS und noch einiges. Die HTA Seite wird dabei am Client gespeichert und auch ausgeführt. Am ehesten trifft der Vergleich VBScript mit WScript ausführen zu. Das ganze ist nicht nicht neu, sondern datiert ca auf das Jahr 99 zurück. Trotzdem sind damit einige elegante Lösungsansätze auch in der ASP.NET Welt machbar.
Mit dem HTA:Application Element wird die Anwendung initalisiert und gesteuert. Eine HTA Anwendung läuft zwar auch ohne dieses Element, lässt sich so aber besser steuern. Der Typ HTA wird von Visual Studio 2002 und 2003 unterstützt. Auch mit Frontpage lassen sich solche Dateien bearbeiten.
Beginnen wir mit einem einfachen Beispiel:
<html> <head> </head> <body> <form method="post"> <input type="button" value="Schaltfläche" name="B3" onclick="alert('msg')"></p> </form> </body> </html> |
Die Datei wird einmal mit HTA und einmals als HTM gespeichert. Der Aufruf zeigt zwei verschiedene Ergebnisse
Die HTA Variante erinnert in der Tat eher an eine Anwendung, vor allem, da die Browser üblichen Ränder fehlen.
Der wesentlichste Unterschied ist aber, das HTA nicht den Sicherheistsbeschränkungen des Browsers unterliegen, sodas man zb auf Verzeichnisse und Laufwerke zugreifen kann. Allerdings lassen sich HTA Files auch nicht vom Webserver ausführen, sondern müssen zunächst lokal gespeichert werden.
So lässt sich z.B. ein Problem lösen, das man die Größe eines Files erst nach dem Upload auslesen kann, da HTML den lokalen Zugriff nicht zulässt .HTA darf auf das lokale File und seine Eigenschaften zugreifen.
Wie bereits erwähnt kann nun per hta:application Element und dessen Attribute auf die Eigenschaften Einfluss genommen werden.
applicationName
Darüber wird der Name der Anwendung gesetzt. Wenn ausserdem noch singleinstance="yes" gesetzt ist, kann diese dann nur einmal gestartet werden
Border
Mögliche Werte sind: dialog (Dialogbox Rahmen), none (kein Rahmen), thick (dicker Rahmen), thin (dünner Rahmen). Normal ist der Standardwert.
borderStyle
Definiert den Stil des Rahmens. Mögliche Werte sind: complex (erhöht und vertieft), normal (normaler Stil), raised (erhöht), static (statisch), sunken (vertieft).
caption
Definiert, ob die Titelleiste angezeigt werden soll oder nicht (yes/no).
contextMenu
Definiert, ob das Kontextmenü angezeigt werden soll wenn man mit der rechten Maustaste in die Anwendung klickt, oder nicht (yes/no).
icon
Enthält den Pfad (URL) des Programmicons.
innerBorder
Definiert, ob der innere Rahmen angezeigt werden soll oder nicht (yes/no).
maximizeButton
Definiert, ob ein Max-Button in der Titelleiste angezeigt werden soll oder nicht (yes/no).
minimizeButton
Definiert, ob ein Min-Button in der Titelleiste angezeigt werden soll oder nicht (yes/no).
navigable
Definiert, ob eine neues Dokumente per Klick auf einen Link, im aktuellen Anwendungsfenster angezeigt werden sollen oder ob dazu ein neues Browser-Fenster geöffnet werden soll (yes/no).
scroll
Definiert, ob Bildlaufleisten angezeigt werden sollen oder nicht, oder ob automatisch entschieden werden soll. (yes/no/auto)
scrollFlat
Definiert, ob die Bildlaufleisten flach oder im normalen 3D-Stil angezeigt werden soll. (yes/no).
selection
Definiert, ob Inhalt des Fensters mit der Maus oder der Tastatur markiert werden kann. (yes/no).
showInTaskBar
Definiert, ob die Anwendung im der Task-Leiste anegzeigt werden soll (yes/no).
sysMenu
Definiert, ob die System-Buttons (Min, Max, Close) in der Titelleiste angezeigt werden soll (yes/no).
version
Definiert die Versionsnummer (oder Buchstaben).
windowState
Definiert, die Startgrößer der Anwendung. Folgende Werte sind möglich: maximize/minimize/normal
ID
Über die ID wird das Dokument später im DOM Adressiert. Damit lassen sich auch Commandline Paramter auslesen. So lässt sich abfragen ob beim Start -i als Paramter übergeben wurde.
if(document.all.htaapp.commandLine.search(' -i') != -1) {... |
Frames
Eine Besonderheit ergibt sich auch in Zusammenarbeit mit Frames (FRAME und IFRAME). Ein zusatz Attribut TRUSTED=YES erlaubt alle Priviligien von HTA in allen Frames anzuwenden.
Eine mögliche Anwendung ist ein Chat System mit HTA und Frames, das seinen Gesprächsinhalt per ASPX vom Web holt. HTA Appliaktion die übers web gestartet werden sollen, werden wie EXE Files vom Browser behandelt und erfordern mindestens eine Bestätigung. Der Vorteil ist, das der Benutzer immer mit der aktuellsten Anwendung arbeitet.
Im nächsten Artikel werden die Grundlagen von HTC erklärt.