L'API esterna è una porzione di ActionScript che fornisce un meccanismo di comunicazione tra ActionScript e il codice in esecuzione su un'applicazione cosiddetta “esterna”, ovvero un'applicazione che funge da contenitore per Flash Player (di solito, si tratta di un browser Web o di un'applicazione proiettore autonoma). In ActionScript 3.0, la funzionalità dell'API esterna è fornita dalla classe ExternalInterface. Nelle versioni di Flash Player precedenti a Flash Player 8, l'azione
fscommand()
viene utilizzata per effettuare la comunicazione con l'applicazione contenitore. La classe ExternalInterface sostituisce
fscommand()
.
Nota:
se avete l'esigenza di utilizzare ancora
fscommand()
(ad esempio, per mantenere la compatibilità con applicazioni precedenti o per interagire con un'applicazione contenitore di terze parti o con la versione autonoma di Flash Player), la funzione è ancora disponibile come funzione a livello di pacchetto nel pacchetto flash.system.
La classe ExternalInterface è un sottosistema che consente di comunicare facilmente da ActionScript e Flash Player al codice JavaScript contenuto in una pagina HTML.
La classe ExternalInterface è disponibile solo nelle seguenti circostanze:
-
In tutte le versioni supportate di Internet Explorer per Windows (5.0 e versioni successive)
-
In tutti i browser che supportano l'interfaccia NPRuntime, tra cui attualmente Firefox 1.0 e versioni successive, Mozilla 1.7.5 e versioni successive, Netscape 8.0 e versioni successive e Safari 1.3 e versioni successive.
-
In un'applicazione AIR, quando il file SWF è incorporato in una pagina HTML visualizzata dal controllo HTMLLoader.
In tutte le altre situazioni (ad esempio, nel caso di esecuzione in un lettore autonomo) in cui la proprietà
ExternalInterface.available
restituisce
false
.
Da ActionScript, è possibile chiamare una funzione JavaScript sulla pagina HTML. L'API esterna offre la seguente funzionalità perfezionata rispetto a
fscommand()
:
-
Potete utilizzare qualsiasi funzione JavaScript, non solo le funzioni utilizzabili con
fscommand()
.
-
È possibile passare un numero qualsiasi di argomenti, con tutti i nomi; non ci sono limitazioni al passaggio di un comando e di un unico argomento String. In questo modo, l'API esterna risulta molto più flessibile rispetto a
fscommand()
.
-
Potete passare diversi tipi di dati (come Boolean, Number e String); la scelta non è limitata ai parametri String.
-
Potete ricevere il valore di una chiamata e restituire immediatamente tale valore ad ActionScript (come valore restituito della chiamata eseguita).
Importante:
se il nome fornito all'istanza di Flash Player in una pagina HTML (l'attributo
id
del tag
object
) include un trattino (
-
) o altri caratteri che sono definiti come operatori in JavaScript (ad esempio,
+
,
*
,
/
,
\
,
.
e così via), le chiamate a ExternalInterface da ActionScript non funzionano quando la pagina Web contenitore viene visualizzata in Internet Explorer. Inoltre, se i tag HTML che definiscono l'istanza di Flash Player (i tag
object
e
embed
) sono nidificati in un tag
form
HTML, le chiamate a ExternalInterface da ActionScript non funzionano.