Kontakt aufnehmen

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 hier public: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>

HTC-Dateien könne auf zweierlei Arten behandelt werden: einerseits können sie das Verhalten eines bestehenden (HTML-)Objektes beschreiben (ab MSIE 5.0) und andererseits können sie selbst ein Objekt darstellen und in das Dokument einbinden (ab MSIE 5.5). Die erste Möglichkeit wurde vorhergehend schon mehrmals besprochen. Bei der zweiten Möglichkeit schreibt die Komponente sich sozusagen selbst in das Dokument hinein. Dazu wird innerhalb des Dokumentes ein eigener Tag (Custom Tags / https://msdn.microsoft.com/workshop/author/dhtml/overview/customtags.html) definiert, dem die Komponente zugewiesen wird. Beispiel:

<html xmlns:meinNamespace>
<style>
 meinNamespace:meinElement { behavior:url(komponente.htc); }
</style>
...
<meinNamespace:meinElement attribut="wert">
</meinNamespace:meinElement>
...
</html>

Die Komponente schreibt sich dann selbst:

<public:component>
 <script>
  innerHTML = '<p>neuer Inhalt der Komponente</p>';
 </script>
 ...
</public:component>

PUBLIC:COMPONENT

Das PUBLIC: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:

EigenschaftBeschreibung
idStellt eine eindeutige Identifikation der Komponente dar.
lightWeightBoolescher 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.
literalContentBoolescher 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)
nameName mit dem die Komponete innerhalb des Dokumentes angesprochen werden kann.
supportsEditModeBoolescher Wert, der beschreibt, ob der Inhalt einer selbst-schreibenden Komponente editierbar ist (true) oder nicht (false / Standard).
tagNameName des selbstdefinierten Tags (bei selbstschreibenden Komponenten).
urnAdresse damit die Komponente identifizieren werden kann.

PUBLIC:ATTACH

Das PUBLIC: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

Das PUBLIC:DEFAULTS-Element definiert die Standard-Eigenschaften einer Komponente. Es besitzt folgende Attribute:

EigenschaftBeschreibung
canHaveHTMLBoolescher 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.
contentEditableBoolescher 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.
styleEntspricht dem style-Attribut eines HTML-Elements.
tabStopBoolescher Wert, der beschreibt, ob die Komponente durch die Tabulatur-Taste (Tab) aktiviert werden kann (true) oder nicht (false / Standard).
viewInheritStyleBoolescher Wert, der beschreibt, ob die Style-Angaben des Eltern-Elements übernommen werden können (true / Standard) oder nicht (false).
viewLinkContentBoolescher 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).
viewMasterTabBoolescher Wert, der beschreibt, ob das Master-Element des ViewLinks in die Tabulatur-Reihenfolge des Dokumentes eingebunden wird (true / Standard) oder nicht (false).

PUBLIC:EVENT

Das PUBLIC: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

Das PUBLIC: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>

... oder:

<public:method name="meineMethode" internalname="abc_fgt_12a">
<script>
 function abc_fgt_12a(v)
 { /* ... */ }
</script>

... wird jeweils aufgerufen durch:

meineKomponente.meineMethode(wert);

PUBLIC:PROPERTY

Das PUBLIC: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>

Bitte bemerken Sie, dass, sobald die 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 Datei http://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

Stefan Wienströer

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

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern