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;