当 HTMLLoader 对象调度
complete
事件之后,即可访问页面的 HTML DOM(文档对象模型)中的所有对象。可访问的对象包括显示元素(例如页面中的
div
和
p
对象)以及 JavaScript 变量和函数。
complete
事件对应于 JavaScript 页面的
load
事件。在调度
complete
之前,可能尚未分析或创建 DOM 元素、变量和函数。如果可能,请等待
complete
事件,然后再访问 HTML DOM。
例如,请看以下 HTML 页:
<html>
<script>
foo = 333;
function test() {
return "OK.";
}
</script>
<body>
<p id="p1">Hi.</p>
</body>
</html>
这个简单的 HTML 页定义了名为
foo
的 JavaScript 变量和名为
test()
的 JavaScript 函数。两者均为该页面的全局
window
对象的属性。此外,
window.document
对象还包括一个名为 P 的元素(ID 为
p1
),可以使用
getElementById()
方法来访问该元素。当页面加载后(HTMLLoader 对象调度
complete
事件时),可以从 ActionScript 访问各个对象,如以下 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
来获取名为
p1
的 HTML 元素的内容。
还可以从 ActionScript 设置 HTML 页的属性。例如,下面的示例使用对包含 HTMLLoader 对象的引用来设置页面上
p1
元素的内容和
foo
JavaScript 变量的值:
html.window.document.getElementById("p1").innerHTML = "Goodbye";
html.window.foo = 66;