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;