Доступ к объектам DOM и JavaScript из ActionScript

Adobe 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;