javascript - navigateToURL 在 flex 中完成时的事件

标签 javascript flash apache-flex actionscript navigatetourl

我正在使用 navigateToURL 从服务器下载文件。是否有可能知道 navigateToURL 何时完成,更像是浏览器下载对话框何时打开?

有时需要 5 秒才能完成,用户可能会感到困惑并像精神病患者一样开始点击下载按钮,这可能会导致打开多个下载对话框。

我想在它完成之前添加一些“请稍候”文本或其他内容(我已经有一个,我只需要知道什么时候停止)。
也许可以使用 javascript 并从 ExternalInterface 获取信息?

最佳答案

这有点疯狂,但我想不出任何其他方法:您可以将请求对象放入字典中,该字典设置为弱引用键,然后每隔一段时间检查键是否被删除。

但是,我不确定首先会发生什么,要么处置 SWF 本身,要么清理字典。考虑到函数的一次性性,对请求对象的引用也可能不会被删除,因为假定它与整个 SWF 一起被删除。

我知道的另一件事是, Uncaught Error 事件将捕获来自 navigateToURL 的事件 - 不是很有用,但至少可以在它不起作用时向您提供指示。

我能想到的更简单的事情 - 只需短时间禁用按钮,例如 1-2 秒。如果有效,没有人会看到延迟,如果无效,他们将无法经常按下它。

private var _requestStore:Dictionary = new Dictionary(true);
private var _timer:Timer = new Timer(10);
. . .
_timer.addEventListener(TimerEvent.TIMER, timerHandler);
. . .
public function openURL(url:String):void
{
    var request:URLRequest = new URLRequest(url);
    _requestStore[request] = true;
    _timer.start();
    navigateToURL(request);
}

private function timerHandler(event:TimerEvent):void
{
    var found:Boolean;
    for (var o:Object in _requestStore)
    {
         found = true;
         break;
    }
    if (!found) // the request got disposed
}

关于javascript - navigateToURL 在 flex 中完成时的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10985781/

相关文章:

javascript - Angular:Http 与 fetch api

javascript - AngularJS: View 完全加载后的 DOM 操作

apache-flex - 如何使用鼠标坐标判断鼠标光标是否位于组件上方?

flash - 当 .swf 和 http 目标都在 localhost 上时,为什么 Flash 需要 crossdomain.xml 文件?

apache-flex - 处理客户事件的flexunit和Async.asyncHandler()

javascript - 在单个数组对象上覆盖 toString() Javascript

javascript - 为什么 setInterval() 周期每次都变快?

android - 我可以使用什么游戏引擎/框架来处理 air mobile 而不会出现 fps 问题?

css - 如何在不将图像嵌入外部样式表的情况下将图像用于皮肤

flash - 用于编辑 .fla 文件的免费 Flash IDE