Die externe API ist der Teil von ActionScript, der einen Mechanismus für den Datenaustausch zwischen ActionScript und anderem Code bereitstellt, der in einer „externen Anwendung“ ausgeführt wird, die als Container für Flash Player fungiert (gewöhnlich ein Webbrowser oder eine eigenständige Projektoranwendung). In ActionScript 3.0 wird die Funktionalität der externen API durch die ExternalInterface-Klasse bereitgestellt. In den Flash Player-Versionen vor Flash Player 8 wurde die
fscommand()
-Aktion für den Datenaustausch mit der Containeranwendung verwendet. Die ExternalInterface-Klasse ersetzt
fscommand()
.
Hinweis:
Für den Fall, dass Sie die alte
fscommand()
-Funktion verwenden müssen – beispielsweise um die Kompatibilität mit älteren Anwendungen zu wahren oder für die Interaktion mit einer SWF-Containeranwendung von Drittanbietern oder mit dem eigenständigen Flash Player – ist diese weiterhin als Funktion auf Paketebene im flash.system-Paket verfügbar.
Die ExternalInterface-Klasse ist ein Subsystem, mit dem Sie unkompliziert aus ActionScript und Flash Player mit JavaScript auf einer HTML-Seite kommunizieren können.
Die ExternalInterface-Klasse steht nur in folgenden Fällen zur Verfügung:
-
In allen unterstützten Versionen von Internet Explorer für Windows (ab Version 5.0)
-
In allen Browsern, die die NPRuntime-Schnittstelle unterstützen, darunter Firefox 1.0 und höher, Mozilla 1.7.5 und höher, Netscape 8.0 und höher und Safari 1.3 und höher
-
In einer AIR-Anwendung, wenn die SWF-Datei in eine HTML-Seite eingebettet ist, die vom HTMLLoader-Steuerelement angezeigt wird.
In allen anderen Fällen (z. B. beim Ausführen in einem eigenständigen Player) gibt die
ExternalInterface.available
-Eigenschaft den Wert
false
zurück.
Mit ActionScript können Sie JavaScript-Funktionen in einer HTML-Seite aufrufen. Im Vergleich zu
fscommand()
bietet die externe API die folgende verbesserte Funktionalität:
-
Sie können jede gewünschte JavaScript-Funktion verwenden, nicht nur die Funktionen, die mit der
fscommand
-Funktion einsetzbar sind.
-
Sie können eine beliebige Anzahl von Argumenten mit frei wählbaren Namen übergeben. Sie sind nicht darauf beschränkt, einen Befehl und einen einzigen Argumentstring zu übergeben. Dadurch bietet die externe API viel mehr Flexibilität als
fscommand()
.
-
Sie können unterschiedliche Datentypen übergeben (z. B. Boolean, Number und String); es gibt keine Beschränkung auf Parameter vom Typ String.
-
Sie können den Wert eines Aufrufs empfangen. Dieser Wert wird sofort (als Rückgabewert des Aufrufs) an ActionScript zurückgegeben.
Wichtig:
Wenn der Name der Flash Player-Instanz in einer HTML-Seite (das
id
-Attribut des
object
-Tags ) einen Bindestrich (
-
) oder andere Zeichen enthält, die in JavaScript als Operatoren definiert sind (zum Beispiel
+
,
*
,
/
,
\
,
.
usw.), sind
ExternalInterface-Aufrufe aus ActionScript beim Anzeigen der Containerwebseite in Internet Explorer unwirksam. Darüber hinaus funktionieren ExternalInterface-Aufrufe aus ActionScript nicht, wenn die die Flash Player-Instanz definierenden HTML-Tags (
object
und
embed
) in einem HTML-
form
-Tag verschachtelt sind.