若要创建 HTML 窗口,可以调用 JavaScript
Window.open()
方法,也可以调用 AIR HTMLLoader 类的
createRootWindow()
方法。
任何安全沙箱中的 HTML 内容都可以使用标准 JavaScript
Window.open()
方法。如果内容在应用程序沙箱外部运行,则只能调用
open()
方法来响应用户交互,例如鼠标单击或按键。在调用
open()
时,将创建具有系统镶边的窗口以在指定 URL 处显示内容。例如:
newWindow = window.open("xmpl.html", "logWindow", "height=600, width=400, top=10, left=10");
注:
可以在 ActionScript 中扩展 HTMLHost 类以自定义用 JavaScript
window.open()
函数创建的窗口。请参阅
关于扩展 HTMLHost 类
。
应用程序安全沙箱中的内容可以访问更强大的窗口创建方法
HTMLLoader.createRootWindow()
。使用此方法,可以指定新窗口的所有创建选项。例如,以下 JavaScript 代码创建不具有大小为 300x400 像素的系统镶边的简单类型窗口:
var options = new air.NativeWindowInitOptions();
options.systemChrome = "none";
options.type = "lightweight";
var windowBounds = new air.Rectangle(200,250,300,400);
newHTMLLoader = air.HTMLLoader.createRootWindow(true, options, true, windowBounds);
newHTMLLoader.load(new air.URLRequest("xmpl.html"));
注:
如果新窗口加载的内容位于应用程序安全沙箱外部,则 window 对象没有以下 AIR 属性:
runtime
、
nativeWindow
或
htmlLoader
。
如果创建透明窗口,则不一定总能显示加载到该窗口的 HTML 中嵌入的 SWF 内容。对于用于引用 SWF 文件的 object 或 embed 标签,必须将它们的
wmode
参数设置为
opaque
或
transparent
。
wmode
的默认值为
window
,因此默认情况下,透明窗口中不显示 SWF 内容。无论设置哪种
wmode
值,透明窗口中都无法显示 PDF 内容。(在早于 AIR 1.5.2 的版本中,透明窗口中也无法显示 SWF 内容。)
使用
createRootWindow()
方法创建的窗口与打开窗口相互独立。JavaScript Window 对象的
parent
和
opener
属性为
null
。打开窗口可以使用
createRootWindow()
函数返回的 HTMLLoader 引用来访问新窗口的 Window 对象。在前一个示例的上下文中,语句
newHTMLLoader.window
引用所创建窗口的 JavaScript Window 对象。
注:
可以从 JavaScript 和 ActionScript 中调用
createRootWindow()
函数。