Åtkomst till HTML DOM och JavaScript-objekt från ActionScript

Adobe AIR 1.0 och senare

När HTMLLoader-objektet skickar complete -händelsen kan du få åtkomst till alla objekt i HTML DOM (Document Object Model) för sidan. De tillgängliga objekten omfattar visningselement (t.ex. div - och p -objekt på sidan) samt JavaScript-variabler och -funktioner. complete -händelsen motsvarar JavaScript-sidans load -händelse. DOM-element, variabler och funktioner har kanske inte tolkats eller skapats innan complete har skickats. Om det är möjligt kan du vänta på complete -händelsen innan du får tillgång till HTML DOM.

Ta till exempel följande HTML-sida:

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

På den här enkla HTML-sidan definieras en JavaScript-variabel som heter foo och en JavaScript-funktion som heter test() . De här båda är egenskaper för sidans globala window -objekt. window.document -objektet innehåller också ett namngivet P-element (med ID p1 ) som du kan få tillgång till med hjälp av metoden getElementById() . När sidan har lästs in (när HTMLLoader-objektet skickar complete -händelsen) får du tillgång till vart och ett av de här objekten från ActionScript. Se följande ActionScript-kod:

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

Om du vill få tillgång till innehållet i ett HTML-element använder du egenskapen innerHTML . Den föregående koden använder till exempel html.window.document.getElementById("p1").innerHTML för att hämta innehållet i HTML-elementet med namnet p1 .

Du kan också ange egenskaper för HTML-sidan från ActionScript. Följande exempel anger till exempel innehållet för p1 -elementet och värdet på JavaScript-variabeln foo på sidan med hjälp av en referens till det HTMLLoader-objekt som ingår:

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