`

Flash/Flex监听浏览器的关闭事件(转)

    博客分类:
  • Flex
 
阅读更多

如果想用Flash/Flex监听浏览器的关闭事件,

可以通过JavaScript的window.onbeforeunload事件进行监听

然后JS调用Flash中的函数。

在swf所在页面的JavaScript中添加如下代码

JS中代码:(这里设定swf文件名为TestFlash)

window.onbeforeunload = onbeforeunloadHandler; //添加响应函数

function onbeforeunloadHandler()

{

 var swfRef = document.TestFlash|| window.TestFlash; //获取swf的引用

 if ( swfRef )  {

 warning = swfRef.windowCloseHandler(); // 调用Flash中的windowCloseHandler函数

 return “Are you sure to close this page?”;

 }

AS中代码:(在程序初始化的函数中添加,例如Flex的creationComplete事件中)

if(flash.external.ExternalInterface.available){  flash.external.ExternalInterface.addCallback(‘windowCloseHandler’,externalWindowCloseHandler);

//使用ExternalInterface向JS中添加调用函数

}

/*

* 告诉服务器,该flash已经被关闭

*/
protected function externalWindowCloseHandler():void{


//use HttpService in Flex

 var http:HTTPService = new HTTPService();

 http.url = ‘http://localhost/testphp/index.php?from=flexcloseByHTTPService’;

 http.send();

//use URLLoader in AS3

 var request:URLRequest = new URLRequest(‘http://localhost/testphp/index.php?                from=flexcloseByUrlLoader’);

 var urlLoader:URLLoader = new URLLoader();

 urlLoader.load(request);

}

Flex中可以在FlashBuilder的HTML模板上添加JS代码

修改html-template中的index.template.html文件

在其中添加JS代码:

window.onbeforeunload = onbeforeunloadHandler; //添加响应函数

function onbeforeunloadHandler()

{

 var swfRef = document.${application}|| window.${application};   //获取swf的引用

 if ( swfRef )  {

 warning = swfRef.windowCloseHandler();    // 调用Flash中的windowCloseHandler函数

 return “Are you sure to close this page?”;

 }

}

在AS中直接注入JS代码

如果不想更改HTML文件,也可以在AS中直接书写JS代码,注入到HTML文档中

if(flash.external.ExternalInterface.available){

 var jsStr:String;

 jsStr =

 ‘eval(\’window.onbeforeunload = onbeforeunloadHandler;’ +

‘function onbeforeunloadHandler(){‘ +

‘var swfRef = document.’+FlexGlobals.topLevelApplication.className+’ ||  window.’+FlexGlobals.topLevelApplication.className+’;’ +

‘swfRef.windowCloseHandler();’ +

‘return “Are you sure to close this page?”;’ +

‘}\’)';

 flash.external.ExternalInterface.call(jsStr);


flash.external.ExternalInterface.addCallback(‘windowCloseHandler’,externalWindowCloseHandler);

}

移除该监听

只要设置window.onbeforeunload=null即可

AS中可以这样写

flash.external.ExternalInterface.call(‘eval(\’window.onbeforeunload = null\’)');

flash.external.ExternalInterface.call(‘eval(\’location.reload();\’)');        //再执行刷新浏览器的命令

 

由 Jack 撰写
From - http://blog.ityao.com/archives/581

分享到:
评论

相关推荐

    flex监听浏览器关闭事件

    ### Flex监听浏览器关闭事件 在Web开发中,有时我们需要对用户关闭浏览器窗口的行为进行监听,并在用户尝试关闭页面时给出提示或执行某些操作。本文将详细介绍如何利用Flex结合JavaScript实现这一功能。 #### 1. ...

    flex4浏览器关闭

    在Flex4中,我们可以利用Flash Player提供的API来监听浏览器关闭事件。虽然Flex应用本身不能直接控制浏览器行为,但可以监听到浏览器即将关闭的信号,从而进行一些必要的清理工作或显示确认对话框,询问用户是否真的...

    [转] [Flash/Flex] 使用Flare3D来实现Flash 3D的推箱子游戏原型---纹理

    在Flash AS3中,通常在`Main`类的`initialize`或`construct`方法中设置舞台大小、加载资源、创建3D对象以及绑定事件监听器。开发者会在这里调用Flare3D库,并创建场景、摄像机、光源等元素,同时定义3D物体的运动和...

    flex获得浏览器参数,flex获得url参数

    该文件是一个基于Flex框架创建的MXML应用程序,用于获取浏览器URL中的参数并显示在界面中。Flex是一个用于构建富互联网应用程序(RIA)的开源框架,它基于ActionScript和MXML,通常与Adobe Flash Player或Adobe AIR...

    chat.zip_FlashMX/Flex源码_FlashMX_

    "chatapp.swf"是Flash MX或Flex编译生成的SWF文件,它是实际运行在用户浏览器上的应用程序。这个文件包含了聊天室的用户界面和逻辑。使用Flash MX,开发者可以使用时间轴和图形工具创建动态UI,同时使用ActionScript...

    zhendongbutton.rar_FlashMX/Flex源码_FlashMX_

    在"震动按钮.fla"中,开发者可能使用ActionScript(Flash的编程语言)编写了控制按钮震动的代码,可能包括时间轴控制、事件监听、动画帧序列等元素。ActionScript允许开发者为按钮添加复杂的交互逻辑,如点击响应、...

    flashstudy.rar_FlashMX/Flex源码_FlashMX_

    5. **事件驱动编程**:Flash和Flex应用程序通常基于事件模型,当用户进行操作或者程序状态改变时,会触发相应的事件,开发者可以注册事件监听器来响应这些事件。 6. **发布和跨平台**:Flash内容可以发布为SWF文件...

    支持火狐IE9的flex右键

    通常,这涉及到对不同浏览器的事件处理进行适配,可能包括使用Flash Player的内置API、自定义事件监听以及处理浏览器特定的事件模型。 在Flex中,我们可以通过以下步骤实现多浏览器右键支持: 1. **捕获鼠标事件**...

    flex与flash的交互

    3. **事件监听**:Flex和Flash都可以监听和触发事件,通过注册事件监听器,一个组件可以响应另一个组件的事件,从而实现复杂的交互逻辑。 4. **数据共享**:在Flex和Flash之间共享数据是常见的需求,可以使用`...

    Foundation ActionScript 3 for Flash and Flex August 2009

    2. **Flex**:Flex 是一个用于构建跨浏览器和操作系统运行的丰富互联网应用程序(RIA)的开源框架。Flex 基于 MXML 和 ActionScript 构建,能够快速构建高质量的应用程序。 #### 四、本书结构与特点 - **编写团队*...

    Jsp嵌入Flex 、Jsp Flash报表实现源码

    - **事件处理**:Flex的交互事件(如点击、拖拽)可以被监听并处理,然后通过与JSP的通信,实现数据的更新或进一步操作。 - **报表设计**:Flex提供多种图表类型,如条形图、饼图、线图等,可以方便地定制报表样式...

    JS与Flex通信、互转例子

    Flex也能监听JavaScript的事件并作出响应,例如: ```as3 ExternalInterface.call("jsFunction", "parameters"); ``` 在实际应用中,这些通信方式可以用于实现诸如按钮点击事件的传递、数据交换、状态更新等...

    flash11.2新功能,Flex屏蔽右击菜单

    这段代码会在整个舞台(stage)上监听右键点击事件,当事件发生时,调用`contextMenuHandler`函数并阻止其默认行为,即关闭默认的右键菜单。 然而,仅仅阻止默认菜单并不足够,有时我们还需要自定义右键菜单。在...

    Flex 白皮书 编成 flash

    4. **Flash Player**: Flex编译出的应用通常运行在Flash Player上,这是一个跨平台的浏览器插件,能够播放SWF格式的Flash内容。Flash Player支持视频、音频、动画以及交互式内容,使得Flex应用能够在多种设备上运行...

    简单的flex、flash播放器

    4. **事件驱动编程**:在Flex和Flash中,用户交互是通过事件驱动模型来处理的,比如点击按钮播放视频,这需要理解事件监听器和事件处理函数的工作原理。 5. **用户界面组件**:Flex提供了丰富的UI组件库,如...

    Flash flex与JS通信

    标题中的"Flash Flex与JS通信"指的是如何让运行在Adobe Flash Player中的Flex应用与浏览器中的JavaScript代码进行数据交换和功能调用。这种通信机制通常被称为External Interface或Bridge技术,它允许Flex应用与网页...

    Iframe js 和 flex 通讯

    js可以通过`postMessage()`向Iframe发送消息,而Flex应用监听`window.message`事件来接收这些消息。确保发送和接收方都正确设置目标Origin以防止跨站脚本攻击。 ```javascript // js 代码 var iframe = ...

    flex/flash自定义组件(搜索栏)

    在IT行业中,自定义组件是开发用户界面时的一项重要技能,特别是在使用Flex或Flash进行富互联网应用程序(RIA)开发时。本示例聚焦于创建一个自定义组件——搜索栏,这是许多网站和应用中常见的功能元素。让我们深入...

    flex做的MP3,MP4播放器

    9. **跨平台兼容性**:Flex应用运行在Flash Player上,而Flash Player可以在多个操作系统和浏览器上运行,使得Flex播放器具有较好的跨平台兼容性。 10. **测试与调试**:开发过程中,需要对播放器进行详尽的测试,...

Global site tag (gtag.js) - Google Analytics