HTML DOM- en JavaScript-objecten oproepen vanuit ActionScript

Adobe AIR 1.0 of hoger

Nadat het HTMLLoader-object de gebeurtenis complete heeft verzonden, hebt u toegang tot alle objecten in het HTML DOM (Document Object Model) voor de pagina. Toegankelijke objecten zijn onder andere weergave-elementen (zoals de objecten div en p in de pagina), evenals JavaScript-variabelen en -functies. De gebeurtenis complete komt overeen met de JavaScript-gebeurtenis load van de pagina. Vóór complete wordt verzonden, mogen variabelen, functies en DOM-elementen niet zijn geparseerd of gecreëerd. Indien mogelijk wacht u op de gebeurtenis complete vóór u het HTML DOM benadert.

Bekijken we als voorbeeld de volgende HTML-pagina:

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

Deze eenvoudige HTML-pagina definieert een JavaScript-variabele met de naam foo en een JavaScript-functie met de naam test() . Beide zijn eigenschappen van het algemene object window van de pagina. Bovendien bevat het object window.document een element met de naam P (met de id p1 ), dat u kunt oproepen met de methode getElementById() . Nadat de pagina is geladen (wanneer het HTMLLoader-object de gebeurtenis complete verzendt), kunt u al deze objecten benaderen vanuit ActionScript, zoals wordt geïllustreerd met de volgende ActionScript-code:

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. 
}

Als u de inhoud van een HTML-element wilt oproepen, gebruikt u de eigenschap innerHTML . De vorige code gebruikt bijvoorbeeld html.window.document.getElementById("p1").innerHTML om de inhoud van het HTML-element p1 op te halen.

U kunt ook eigenschappen voor de HTML-pagina instellen vanuit ActionScript. Het volgende voorbeeld stelt de inhoud van het element p1 en de waarde van de JavaScript-variabele foo op de pagina in met behulp van een verwijzing naar het bevattende HTMLLoader-object:

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