Acceso a objetos JavaScript y DOM HTML desde ActionScript

Adobe AIR 1.0 y posterior

Una vez que el objeto HTMLLoader distribuye el evento complete , se puede acceder a todos los objetos en DOM HTML (modelo de objeto de documentos) para la página. Los objetos accesibles incluyen elementos de visualización (como objetos div y p en la página) así como funciones y variables de JavaScript. El evento complete corresponde al evento de página JavaScript load . Es posible que antes de distribuir el evento complete , los elementos DOM, variables, y funciones no se hayan analizado o creado. Si es posible, espere al evento complete antes de acceder al DOM HTML.

Por ejemplo, considere la siguiente página HTML:

<html> 
    <script> 
        foo = 333; 
        function test() { 
            return "OK."; 
        } 
    </script> 
    <body> 
        <p id="p1">Hi.</p> 
    </body> 
</html>

Esta simple página HTML define una variable JavaScript denominada foo y una función JavaScript denominada test() . Ambas son propiedades del objeto global window de la página. Asimismo, el objeto window.document incluye un elemento P (con el ID p1 ), que se puede acceder utilizando el método getElementById() . Una vez que se carga la página (cuando el objeto HTMLLoader distribuye el evento complete ), se puede acceder a cada uno de estos objetos desde ActionScript, como se muestra en el siguiente código ActionScript:

var html:HTMLLoader = new HTMLLoader(); 
html.width = 300; 
html.height = 300; 
html.addEventListener(Event.COMPLETE, completeHandler); 
var xhtml:XML =  
    <html> 
        <script> 
            foo = 333; 
            function test() { 
                return "OK."; 
            } 
        </script> 
        <body> 
            <p id="p1">Hi.</p> 
        </body> 
    </html>; 
html.loadString(xhtml.toString()); 
 
function completeHandler(e:Event):void { 
    trace(html.window.foo); // 333 
    trace(html.window.document.getElementById("p1").innerHTML); // Hi. 
    trace(html.window.test()); // OK. 
}

Para acceder al contenido de un elemento HTML, utilice la propiedad innerHTML . Por ejemplo, el código anterior utiliza html.window.document.getElementById("p1").innerHTML para obtener el contenido del elemento HTML denominado p1 .

También se pueden definir propiedades de la página HTML desde ActionScript. Por ejemplo, en el siguiente ejemplo se define el contenido del elemento p1 y el valor de la variable JavaScript foo en la página utilizando una referencia al objeto HTMLLoader que lo contiene:

html.window.document.getElementById("p1").innerHTML = "Goodbye"; 
html.window.foo = 66;