URLLoader取消任何浏览器事件的加载

时间:2010-02-23 20:21:07

标签: flex flash browser urlloader

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

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

我正在侦听完整事件或任何服务器错误事件。

我的问题是当用户想要在闪存加载URL时进入另一个页面时:浏览器在接受用户请求之前等待url完全加载。正如我所说,这个图表可能需要一分钟才能加载,如果他们想要更改页面,我的用户就会感到烦恼。

这是我的问题:是否有一个事件要从浏览器收听任何事件(点击另一个链接,点击浏览器的“后退”按钮...)?如果我这样做错了,请不要犹豫告诉我,我真的不习惯用闪光灯编程。

谢谢。

1 个答案:

答案 0 :(得分:0)

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

文件上传HTTP服务器

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

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

浏览器活动

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

  • 的OnExit
  • 的OnClose
  • onblur(当他们点击其他地方时)

查看此示例:Javascript onclose: Warn the User

希望有所帮助, 兰斯