Flex与JavaScript交互:监听浏览器关闭事件
5星 · 超过95%的资源 需积分: 10 130 浏览量
更新于2024-09-15
收藏 3KB TXT 举报
"本文主要介绍如何在Flex应用中监听浏览器的关闭事件,并在用户尝试关闭浏览器时弹出提示。通过JavaScript与Flash/Flex之间的交互,实现这一功能。"
在Flex开发中,有时我们需要在用户关闭浏览器窗口时执行某些操作,比如保存数据或确认是否真的要离开页面。这个过程可以通过监听浏览器的`onbeforeunload`事件来实现。在描述的场景中,我们首先在HTML页面中的JavaScript部分设置这个事件处理器:
```javascript
window.onbeforeunload = onbeforeunloadHandler;
```
然后定义`onbeforeunloadHandler`函数,该函数会调用Flex中的方法`windowCloseHandler`:
```javascript
function onbeforeunloadHandler() {
var swfRef = document.getElementById('TestFlash') || window.TestFlash; // 获取SWF对象
if (swfRef) {
var warning = swfRef.windowCloseHandler(); // 调用Flash的windowCloseHandler
return 'Are you sure to close this page?'; // 弹出关闭提示
}
}
```
在Flex的ActionScript(AS)代码中,我们需要确保`ExternalInterface`可用,并添加一个回调函数`externalWindowCloseHandler`来处理来自JavaScript的调用:
```actionscript
if (flash.external.ExternalInterface.available) {
flash.external.ExternalInterface.addCallback('windowCloseHandler', externalWindowCloseHandler);
}
```
`externalWindowCloseHandler`函数可以用来执行实际需要的操作,例如使用HTTPService或URLLoader发送网络请求:
```actionscript
protected function externalWindowCloseHandler():void {
var http:HTTPService = new HTTPService();
http.url = 'http://localhost/testphp/index.php?from=flexcloseByHTTPService';
http.send();
// 或者使用URLLoader
var request:URLRequest = new URLRequest('http://localhost/testphp/index.php?from=flexcloseByUrlLoader');
var urlLoader:URLLoader = new URLLoader();
urlLoader.load(request);
}
```
最后,Flex项目通常使用FlashBuilder生成HTML包装器(html-template),其中包含`index.template.html`文件,它会嵌入SWF内容并设置JavaScript与Flex的交互。
总结来说,这个技术方案利用了JavaScript的`onbeforeunload`事件结合Flash/Flex的`ExternalInterface`进行通信,当用户尝试关闭浏览器时,先在JavaScript层面触发Flex应用的特定方法,再由Flex应用执行相应的关闭处理逻辑,如发送网络请求。这样可以实现对浏览器关闭事件的监听和用户确认提示,确保数据的完整性和用户体验。
2012-08-02 上传
2010-04-09 上传
2011-05-22 上传
2022-09-14 上传
2014-06-15 上传
2014-11-24 上传
2019-03-16 上传
2013-01-18 上传
2019-07-27 上传
qinhu0811
- 粉丝: 1
- 资源: 13
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程