Dostęp do modelu DOM HTML i obiektów JavaScript z kodu ActionScript

Adobe AIR 1.0 i starsze wersje

Po wywołaniu zdarzenia complete przez obiekt HTMLLoader programista ma dostęp do wszystkich obiektów modelu DOM (obiektowy model dokumentu) HTML strony. Obiekty, do których można uzyskać dostęp, zawierają elementy wyświetlane (np. obiekty div i p na stronie), a także zmienne i funkcje JavaScript. Zdarzenie complete odpowiada zdarzeniu load strony JavaScript. Nie należy przekształcać ani tworzyć elementów, zmiennych i funkcji modelu DOM, zanim nie zostanie wywołane zdarzenie complete . Jeśli jest to możliwe, należy poczekać na zdarzenie complete przed dostępem do modelu DOM HTML.

Na przykład: rozważmy następującą stronę HTML:

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

Prosta strona HTML definiuje zmienną JavaScript o nazwie foo oraz funkcję JavaScript o nazwie test() . Obie są właściwościami obiektu globalnego window strony. Obiekt window.document zawiera element o nazwie P (z ID p1 ), do którego dostęp można uzyskać za pomocą metody getElementById() . Po załadowaniu strony (gdy obiekt HTMLLoader wywoła zdarzenie complete ) możliwy jest dostęp do każdego z tych obiektów za pomocą języka ActionScript, co ilustruje poniższy kod 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. 
}

Aby uzyskać dostęp do treści elementu HTML, należy użyć właściwości innerHTML . Na przykład: poprzedni kod używa wywołania html.window.document.getElementById("p1").innerHTML w celu pobrania treści elementu HTML o nazwie p1 .

Możliwe jest również ustawienie właściwości strony HTML z kodu ActionScript. Na przykład: poniższy przykład ustawia na stronie treść elementu p1 oraz wartość zmiennej JavaScript foo za pomocą odwołania do zawierającego je obiektu HTMLLoader:

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