以下是在Adobe Air App中打开窗口的示例代码。
var init = new air.NativeWindowInitOptions();
var bounds = null;
var child = air.File.applicationDirectory.resolvePath('child.html');
bounds = new air.Rectangle(0, 0, 300, 500);
win = air.HTMLLoader.createRootWindow(true, init, false, bounds);
win.load(new air.URLRequest(child.url));
打开的窗口必须访问父窗口的文档对象。 以下是child.html的代码
<script>
function init() {
alert(window.parent);
}
</script>
<body onload="init()">
此代码警告空消息; 有没有办法访问父窗口?
答案 0 :(得分:1)
当你使用createRootWindow()函数时,你会得到一个没有父元素的窗口 - 这就是函数名中的“Root”试图通过的东西(看起来很糟糕)。但是,很容易解决方法:
win = air.HTMLLoader.createRootWindow(true, init, false, bounds);
win.load(new air.URLRequest(child.url));
//add
win.window.parent = this.window;
至少这是一般的想法。在设置父级之前,您可能需要等待htmlDOMCreate或complete事件。此外,即使子项位于另一个安全沙箱中,AIR也可以让您设置父项。如果是这样,那将是您应用中的一大安全漏洞。