DHTML Behaviors: HTC-Komponenten
Eine HTC-Datei besteht im Grunde immer aus den gleichen Dingen. Ähnlich wie HTML besitzt sie ein root-Element (Elternelement), das sich hierpublic:component
nennt. Innerhalb dieses Elementes werden alle anderen Elemente notiert. Außerdem wird auf jeden Fall ein script
-Bereich benötigt in dem die verwendeten Funktionen Platz finden werden. Beispiel für eine minimale HTC-Datei: <public:component>
<script>
</script>
</public:component>
<html xmlns:meinNamespace>
<style>
meinNamespace:meinElement { behavior:url(komponente.htc); }
</style>
...
<meinNamespace:meinElement attribut="wert">
</meinNamespace:meinElement>
...
</html>
<public:component>
<script>
innerHTML = '<p>neuer Inhalt der Komponente</p>';
</script>
...
</public:component>
PUBLIC:COMPONENT
DasPUBLIC:COMPONENT
-Element stellt das root-Element der Datei dar. Es deutet dem Browser, dass es sich dabei um eine HTC-Komponente handelt. außerdem besitzt es folgende Eigenschaften:
Eigenschaft | Beschreibung |
---|---|
id | Stellt eine eindeutige Identifikation der Komponente dar. |
lightWeight | Boolescher Wert, der beschreibt, ob die Datei Markup (z.B. HTML) enthält (true) oder nicht (false / Standard). Wird benötigt, wenn sich die Komponente selbst schreibt. |
literalContent | Boolescher Wert, der beschreibt, ob der enthaltende Markup gerendert werden soll (true) oder nicht (false / Standard). Wird benötigt, wenn sich die Komponente selbst schreibt. (siehe Microsoft / https://msdn.microsoft.com/workshop/ author/behaviors/overview/ literalcontent_ovw.html) |
name | Name mit dem die Komponete innerhalb des Dokumentes angesprochen werden kann. |
supportsEditMode | Boolescher Wert, der beschreibt, ob der Inhalt einer selbst-schreibenden Komponente editierbar ist (true ) oder nicht (false / Standard). |
tagName | Name des selbstdefinierten Tags (bei selbstschreibenden Komponenten). |
urn | Adresse damit die Komponente identifizieren werden kann. |
PUBLIC:ATTACH
DasPUBLIC:ATTACH
-Element bindet eine Funktion an ein Ereignis. Das entspricht in etwa dem aus HTML bekannten <element onEreignis="funktion()">
Format in anderer Schreibweise. Dem Element müssen zwei Werte übergeben werden: Das Attribut event
enthält den Namen des Ereignisses das angebunden werden soll, sowie das Attribut onevent
das die Auszuführende Funktion bei Eintritt des Ereignisses beschreibt. außerdem können optional die Attribute for
und id
definiert werden. For
gibt die Quelle des Ereignisses (z.B. window
, document
, ...) an. Die id
beschreibt eine eindeutige Identifikation. Beispiel:
<public:attach event="onclick" onevent="machwas()" />
<script>
function machwas() { ... }
</script>
PUBLIC:DEFAULTS
DasPUBLIC:DEFAULTS
-Element definiert die Standard-Eigenschaften einer Komponente. Es besitzt folgende Attribute:
Eigenschaft | Beschreibung |
---|---|
canHaveHTML | Boolescher Wert, der beschreibt, ob die Datei Markup (z.B. HTML) enthält (true ) oder nicht (false / Standard). Wird benötigt, wenn sich die Komponente selbst schreibt. |
contentEditable | Boolescher Wert, der beschreibt, ob der Inhalt einer selbst-schreibenden Komponente editierbar ist (true ) oder nicht (false / Standard). Der Wert inherit besagt, dass die Eigenschaft vom Eltern-Element übernommen werden soll. |
style | Entspricht dem style -Attribut eines HTML-Elements. |
tabStop | Boolescher Wert, der beschreibt, ob die Komponente durch die Tabulatur-Taste (Tab) aktiviert werden kann (true ) oder nicht (false / Standard). |
viewInheritStyle | Boolescher Wert, der beschreibt, ob die Style-Angaben des Eltern-Elements übernommen werden können (true / Standard) oder nicht (false ). |
viewLinkContent | Boolescher Wert, der beschreibt, ob der Markup-Inhalt der Komponente als ViewLink (siehe https://msdn.microsoft.com/ workshop/author/behaviors/overview/ viewlink_ovw.html) verwendet wird (true ) oder nicht (false / Standard). |
viewMasterTab | Boolescher Wert, der beschreibt, ob das Master-Element des ViewLinks in die Tabulatur-Reihenfolge des Dokumentes eingebunden wird (true / Standard) oder nicht (false ). |
PUBLIC:EVENT
DasPUBLIC:EVENT
-Element definiert ein Ereignis der Komponente. Dazu wird das Attribut name
(Name des Ereignisses) erwartet. Optional kann eine id
vergeben werden, durch die das Ereignis innerhalb des Scriptes angesprochen werden kann. Beispiel:
<public:event name="onMeinEreignis" ID="Ereignis_1" />
<script>
/* ... */
Ereignis_1.fire(meinEreignis);
/* ... */
</script>
PUBLIC:METHOD
DasPUBLIC:METHOD
-Element definiert eine Methode der Komponente. Diese wird durch das name
-Attribut beschrieben und muss als Funktion innerhalb der Komponente vertreten sein. außerdem können optional eine id
sowie ein interner Name (internalname
) vergeben werden. Die id
beschreibt eine eindeutige Identifikation der Methode. Der interne Name wird dazu verwendet um Methoden nach Außen hin einfacher bzw. besser erscheinen zu lassen. Dazu wird der eigentliche Name der Funktion als interner Name definiert - als Methodenname wird ein anderer (einfacherer) gewählt. Wird nun von Aussen, d.h. vom Dokument aus, die Methode aufgerufen kann dies über den einfachereren Namen geschehen. Wird kein interner Name definiert gilt automatisch der Wert des name
-Attributes. Beispiel:
<public:method name="meineMethode">
<script>
function meineMethode(v)
{ /* ... */ }
</script>
<public:method name="meineMethode" internalname="abc_fgt_12a">
<script>
function abc_fgt_12a(v)
{ /* ... */ }
</script>
meineKomponente.meineMethode(wert);
PUBLIC:PROPERTY
DasPUBLIC:PROPERTY
-Element definiert eine Eigenschaft/ein Attribut der Komponente. Dazu wird der name der Eigenschaft erwartet. Alternativ kann dazu auch ein interner Name (internalname
) beschrieben werden (siehe PUBLIC:METHOD
). außerdem stehen die folgenden optionalen Attribute zur Verfügung: get
(Funktion die aufgerufen werden soll, wenn der Wert gelesen wird), id
(Identifikation), persist
(Boolescher Wert, ob die Eigenschaft persistent/beständig sein soll), put
(Funktion die aufgerufen werden soll, wenn der Wert geschrieben wird) und value
(Standardwert der Eigenschaft). Des Weiteren besitzt das Element die Methode fireChange()
. Wird diese ausgeführt, deutet sie dem Dokument, dass die betreffende Eigenschaft geändert wurd und somit das onpropertychange
-Ereignis ausgelöst werden muss. Wurde der put
-Wert definiert, brauch diese Methode nicht extra aufgerufen werden. Beispiel:
<public:property id="eigenschaft1" name="meineEigenschaft"
put="setzen" get="lesen"/>
<script>
var eigenschaft = null;
function lesen()
{
return(eigenschaft);
}
function setzen(wert)
{
eigenschaft = wert;
eigenschaft1.fireChange();
}
</script>
get
- oder put
-Eigenschaft definiert wurde, der interne Name ignoriert wird.
Hinweise
Bitte beachten Sie, dass auch für HTC-Dateien erhöhte Sicherheitsmerkmale gelten. Das bedeutet, dass HTC-Dateien nur auf dem Server verwendent werden können, auf dem sich auch das Quelldokument befindet. Dazu kommt, dass es sich bei der Verbindung auch um das gleiche Protokoll und die gleiche Domain handeln muss. Als Beispiel kann z.B. eine Dateihttp://www.name.de/abc.html
die Datei http://www.name.de/abc.htc
verwenden, allerdings können die Dateien https://www.name.de/abc.htc
und http://www.name-name.de/abc.htc
nicht verwendet werden.Bitte beachten Sie auch, dass es sich bei HTC-Dateien um XML handelt und deshalb auch die Regeln von XML gelten müssen (
/>
bei leeren Elementen, Anführunsgezeichen sind zu setzten, ...).
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project