Когда объект HTMLLoader отправляет событие
complete
, все объекты модели объекта документа (DOM) в HTML становятся доступны. Доступные объекты включают отображаемые элементы (такие как объекты
div
и
p
на странице) и переменные и функции JavaScript. Событие
complete
соответствует событию
load
(загрузки страницы) в JavaScript. До отправки события
complete
элементы, переменные и функции DOM, скорее всего, нельзя будет разобрать или создать. По возможности следует дождаться события
complete
до того, как обращаться к модели DOM HTML.
Например, рассмотрим следующую HTML-страницу:
<html>
<script>
foo = 333;
function test() {
return "OK.";
}
</script>
<body>
<p id="p1">Hi.</p>
</body>
</html>
На этой простой HTML-странице определяется переменная JavaScript
foo
и функция JavaScript
test()
. И то, и другое являются свойствами глобального объекта
window
страницы. Кроме того, объект
window.document
включает элемент P (с ID
p1
), доступ к которому осуществляется с помощью метода
getElementById()
. После загрузки страницы (когда объект HTMLLoader отправляет событие
complete
) каждый из этих объектов доступен из 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.
}
Для доступа к содержимому HTML-элемента используйте свойство
innerHTML
. Например, в коде выше свойство
html.window.document.getElementById("p1").innerHTML
используется для получения содержимого HTML-элемента
p1
.
Свойства HTML-страницы можно задать через ActionScript. Например, в примере ниже содержимое элемента
p1
и значение переменной JavaScript
foo
задаются с помощью ссылки на объект-контейнер HTMLLoader:
html.window.document.getElementById("p1").innerHTML = "Goodbye";
html.window.foo = 66;