【问题标题】:Adobe AIR - What is the proper method for using an EventListener on a newly created window?Adobe AIR - 在新创建的窗口上使用 EventListener 的正确方法是什么?
【发布时间】:2010-11-19 03:07:02
【问题描述】:

我对 AIR 开发非常陌生,并且刚刚开始认真构建我的第一个简单应用程序。我想在第一次运行时打开一个新窗口以提示用户进行所需的设置。在测试新窗口并检测其关闭状态时,我做了以下事情(包括一些 jQuery 代码):

以下代码用于在运行主应用程序时打开新窗口(一旦打开)。

$(document).ready(function(){
    var options = new air.NativeWindowInitOptions();
    options.type = air.NativeWindowType.UTILITY;
    var windowBounds = new air.Rectangle(200,250,300,400);

    //create the new window
    newHTMLLoader = air.HTMLLoader.createRootWindow(true, options, true, windowBounds);
    newHTMLLoader.load(new air.URLRequest("setup.html"));
    newHTMLLoader.window.opener = window;
    newHTMLLoader.window.nativeWindow.addEventListener(air.Event.CLOSE, handleNewSettings);
}

下面的代码直接位于jQuery document.ready 函数的右大括号之后。它的目的是处理设置窗口的关闭事件。如果它在没有提交的情况下关闭 - 这是我到目前为止在这里测试的全部 - 我希望它删除事件侦听器,按照手册的建议以提高内存,并关闭主应用程序窗口(当前不可见)。

function handleNewSettings(event){
    //remove the event handler from memory first...
    newHTMLLoader.removeEventListener(Event.CLOSE, arguments.callee);

    //this is my event handler code
    alert('yay');
    window.close();
}

关闭设置窗口后,我收到了似乎是 AIR 运行时错误:

发生了 ActionScript 错误: “类型错误:错误 #2007:参数 类型必须为非空。 在 flash.events::EventDispatcher/removeEventListener()"

我认为这个错误与应用程序范围有关,但我也不太精通 JS 范围规则。如果我注释掉 removeEventListener 行,它似乎运行代码;但是,我不确定我是否以正确的方式做这一切。我试图在我的查询中详细说明,但原来的问题又回到了问题的标题。

【问题讨论】:

  • 不确定,也不熟悉 AIR,但我对那个 Event.CLOSE 很怀疑。不应该是 air.Event.CLOSE,就像在 addEventListener 调用中一样?
  • 糟糕,对不起,还有。今天早上早些时候我没有看到你的回复——你是对的。拥有第二双眼睛总是有帮助的;我希望我有一些我工作的地方。谢谢! (下次留下答案,你可以加分!)

标签: javascript jquery scope air event-listener


【解决方案1】:

错误是由于缺少类(或者是命名空间?)

newHTMLLoader.removeEventListener(Event.CLOSE, arguments.callee);

...应该是...

newHTMLLoader.removeEventListener(air.Event.CLOSE, arguments.callee);

我仍然不确定这是否是处理此类事情的推荐或适当方法。

【讨论】:

    猜你喜欢
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2010-12-03
    • 2017-07-15
    相关资源
    最近更新 更多