Accès au DOM HTML et aux objets JavaScript à partir d’ActionScript

Adobe AIR 1.0 et les versions ultérieures

Dès que l’objet HTMLLoader distribue l’événement complete , vous pouvez accéder à tous les objets dans le DOM (ou document object model) HTML pour la page. Les objets accessibles sont les éléments d’affichage, tels que les objets div et p dans la page, ainsi que les variables et fonctions JavaScript. L’événement complete correspond à l’événement load de la page JavaScript. Avant que complete ne soit distribué, les éléments DOM, les variables et les fonctions peuvent ne pas avoir été analysés ou créés. Si possible, attendez l’événement complete avant d’accéder au DOM HTML.

Par exemple, examinez la page HTML suivante :

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

La page HTML simple définit une variable JavaScript appelée foo et une fonction JavaScript appelée test() . Ces deux éléments sont des propriétés de l’objet window global de la page. En outre, l’objet window.document comprend un élément appelé P, pourvu de l’ID p1 ), auquel vous pouvez accéder à l’aide de la méthode getElementById() . Dès que la page est chargée, c’est-à-dire lorsque l’objet HTMLLoader distribue l’événement complete , vous pouvez accéder à chacun de ces objets à partir d’ActionScript, comme le montre le code ActionScript ci-dessous :

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

Pour accéder au contenu d’un élément HTML, utilisez la propriété innerHTML . Par exemple, le code ci-dessus utilise html.window.document.getElementById("p1").innerHTML pour lire le contenu de l’élément HTML appelé p1 .

Vous pouvez également paramétrer les propriétés de la page HTML à partir d’ActionScript. Ainsi, l’exemple ci-dessous définit le contenu de l’élément pl et la valeur de la variable JavaScript foo sur la page à l’aide d’une référence à l’objet conteneur HTMLLoader :

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