CirTap: Reaktion auf Events von Komponenten

Beitrag lesen

Hallo Gorian,

ActiveX = IE, demnach solltest Du der Einfachheit halber in VBScript programmieren, zumindest die Event-Handler lassen sich so einfach implementieren.
Der IE ist auch in der Lage Funktionen die in VBS und JS zu mischen, sprich man kann sie gegenseitig aufrufen!

Beispiel:
<OBJECT id="meinTeil" ...>

Der Doku des ActiveX-Objektes kannst du ja die Parameterliste der Events entnehmen, falls erforderlich.
Der IE übernimmt *automatisch* die Zuweisung zwischen den Event-handler-Funktionen und den Objekten, sofern sie in VBS programmiert sind!!
Eine Deklaration des Eventhandler in der Art wie bei JS ist also nicht unbedingt erforderlich.

Beispiel: Eventname = fileLoaded
<script language="VBScript">
Function meinTeil_fileLoaded()
  '      ^^^^^^^^
  ' "meinTeil" ist die ID des (HTML-)Objektes
' machen was erforderlich ist
  ...
' z.B. JS-Funktion aufrufen (!)
   Call assimilate("Ich bin VBS")
End Function

Function meinTeil_anderesEvent()
   ...
End Function
</script>

<script language="javascript">
function assimilate(msg) {
  alert(msg);
}
</script>

Die Syntax für einen Event-Handler in VBS lautet also:
Function objektID_eventname()
End Function

Die "offiziellen" Vorgehensweisen in JavaScript wären:
1.)
<script FOR="meinTeil" EVENT="fileloaded" LANGUAGE="JavaScript">
/* hier auf Kleinschreibung achten! */
  alert("Datei wurde geladen");
</script>

oder
2.) document.all.meinTeil.fileloaded="eventHandler()";

Der Aufruf von VBS-Funktionen innerhalb eines JavaScript Blockes ist natürlich ebenso möglich. Im Script-Tag muß aber unbedingt die verwendete LANGUAGE="sprache" angegeben werden, da IE sonst von JavaScript ausgeht.

Und ein nachvollziehbarer "Beweis" (copy'n'paste):
<script language="vbscript">
Function window_onload()
   msgbox "Ich habe fertig!", vbInformation,_
        "Tach auch"
End Function
</script>
entspricht
  <body ... onload="funktion();">

Das steht übrigenz *alles* im MSDN ;-)
http://msdn.microsoft.com/workshop/author/om/event_model.asp

CirTap