0

我在页面中有一个 flash 元素,它根据一些可能需要一分钟才能加载的复杂查询来加载图表。我用这段代码调用查询:

var chartData:URLLoader = new URLLoader();
chartData.addEventListener(Event.COMPLETE, onLoaded);
chartData.addEventListener("httpStatus", onHttpStatus);
chartData.load(new URLRequest(chartURL));

我监听完整事件或任何服务器错误事件。

我的问题是当用户想要在 flash 加载 URL 时进入另一个页面时:浏览器在接受用户请求之前正在等待 url 完全加载。正如我所说,加载此图表最多可能需要一分钟,如果我的用户想要更改页面,等待他们有点烦人。

这是我的问题:是否有一个事件可以监听来自浏览器的任何事件(点击另一个链接,点击浏览器的“返回”按钮......)?如果我这样做的方式有误,请毫不犹豫地告诉我,我真的不习惯在闪存中编程。

谢谢你。

4

1 回答 1

0

我想我明白你在描述什么。您可能想尝试的一些事情:

文件上传 HTTP 服务器

如果文件非常大,您可能希望将它们加载到另一个 HTTP 服务器上,例如 Nginx。查看Nginx 上传模块(我确信 Apache 也有同样的东西)。这基本上允许您上传文件而不会让用户感受到影响。

唯一的问题是它非常复杂,您不知道文件何时完成上传。但是他们确实有如何使用 Javascript 使用 Nginx 显示上传进度条的示例,因此您可以执行类似的操作,并在完成时(在 javascript 中)向 flash 发送一条消息,调用类似您的Event.COMPLETE处理程序的内容。

浏览器事件

有一些浏览器事件可以用 Javascript 拦截,以防止您的用户在下载完成之前离开页面(不推荐,因为它可能会惹恼用户):

  • 退出
  • 关闭
  • onblur(当他们点击其他地方时)

看看这个例子:Javascript onclose:警告用户

希望有帮助,兰斯

于 2010-02-24T00:10:21.660 回答