Доступ к объектам DOM и JavaScript из ActionScriptAdobe AIR 1.0 и более новых версий Когда объект 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;
|
|