如何访问Adobe Air Apps上的父窗口

时间:2010-12-24 10:11:23

标签: adobe air parent

以下是在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()">

此代码警告空消息; 有没有办法访问父窗口?

1 个答案:

答案 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也可以让您设置父项。如果是这样,那将是您应用中的一大安全漏洞。