Per accedere da ActionScript agli oggetti di una pagina HTML in un file SWF importato nella pagina usando il tag
<script>
, passate un riferimento all'oggetto JavaScript, ad esempio
window
o
document
, a una funzione definita nel codice ActionScript. Usate il riferimento all'interno della funzione per accedere all'oggetto JavaScript (o ad altri oggetti accessibili tramite il riferimento specificato).
Ad esempio, esaminate la seguente pagina HTML:
<html>
<script src="ASLibrary.swf" type="application/x-shockwave-flash"></script>
<script>
num = 254;
function getStatus() {
return "OK.";
}
function runASFunction(window){
var obj = new runtime.ASClass();
obj.accessDOM(window);
}
</script>
<body onload="runASFunction">
<p id="p1">Body text.</p>
</body>
</html>
In questa semplice pagina HTML sono presenti una variabile JavaScript denominata
num
e una funzione JavaScript denominata
getStatus()
. Entrambe sono proprietà dell'oggetto
window
della pagina. Inoltre l'oggetto
window.document
include un elemento chiamato P (con ID
p1
).
Questa pagina carica il file ActionScript “ASLibrary.swf” contenente la classe ASClass. A sua volta, la classe ASClass definisce una funzione chiamata
accessDOM()
, che tiene traccia dei valori di questi oggetti JavaScript. Il metodo
accessDOM()
accetta l'oggetto JavaScript Window come argomento. Usando questo riferimento Window, ottiene l'accesso ad altri oggetti della pagina, tra cui variabili, funzioni ed elementi DOM, come indicato nella seguente definizione:
public class ASClass{
public function accessDOM(window:*):void {
trace(window.num); // 254
trace(window.document.getElementById("p1").innerHTML); // Body text..
trace(window.getStatus()); // OK.
}
}
Potete sia ottenere che impostare le proprietà della pagina HTML da una classe ActionScript importata. Ad esempio, la seguente funzione imposta il contenuto dell'elemento
p1
e il valore della variabile JavaScript
foo
nella pagina:
public function modifyDOM(window:*):void {
window.document.getElementById("p1").innerHTML = "Bye";
window.foo = 66;