Flash/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

Dify + mem0插件实战:如何让AI记住你的饮食习惯(附完整代码) 本文通过Dify平台与mem0插件实战,详细演示了如何为AI助手构建长期记忆系统,使其能记住并理解用户的复杂饮食习惯(如过敏源、饮食偏好)。文章提供了完整的工作流配置与Python代码示例,帮助开发者实现跨会话的个性化饮食建议,解决AI对话中的“健忘”问题。 阅读详情

相关推荐

find命令

命令是 Linux/Unix 系统中用于搜索文件和目录的强大工具,支持多种搜索条件组合,并能对搜索结果执行各种操作。以下是其详细说明、常用参数及示例: 搜索路径:指定起始目录(如 、 或 表示当前目录)。 查找条件:基于文件名、类型、大小、时间等属性过滤。 处理动作:对匹配结果执行操作(如打印、删除、执行命令等)。 常用参数及示例 1. 按名称查找 :区分大小写匹配文件名。 :不区分大小写匹配文件名。 2. 按文件类型查找 :指定文件类型。 文件类型: :普通文件 :目录 :符号链接

qiao2458的博客 1134

[轉]Flash/Flex监听浏览器的关闭事件

FROM : http://blog.ityao.com/archives/581     如果想用Flash/Flex监听浏览器的关闭事件,可以通过JavaScript的window.onbeforeunload事件进行监听然后JS调用Flash中的函数。在swf所在页面的JavaScript中添加如下代码JS中代码:(这里设定swf文件名为TestFlash)window.onbefor...

weixin_33906657的博客 193

卷积神经网络-猫狗识别(附源码)

利用python实现一个卷积神经网络,训练猫狗数据集,实现对猫狗图片的预测识别

m0_63223213的博客 2万+

处理Flex 页面的后退前进刷新关闭事件

1. 在 index.template.html 中增加javascript window.onbeforeunload = onbeforeunload_handler;   function onbeforeunload_handler()    {       var warning="";     var fxControl = document.${applica

jiangyu198558的专栏 675

Air780E模组AT指令实战:5分钟搞定MQTT连接EMQX服务器(附完整代码)

本文详细介绍了如何使用Air780E 4G模组通过AT指令快速连接MQTT服务器。从硬件接线、网络注册到MQTT连接配置,提供了完整的实战步骤和代码示例,帮助开发者快速实现物联网设备的数据上报与远程通信。

wdx012345的博客 742

CATIA CAA开发环境搭建避坑指南:从授权服务到VS配置全流程

本文提供了一份详尽的CATIA CAA开发环境搭建避坑指南,涵盖从授权服务(DSLS)安装、Visual Studio版本匹配与集成配置,到编译调试全流程。重点解析了授权服务无法连接、模块加载失败等典型问题的解决方案,强调版本严格对应与纯英文环境是成功搭建的关键。

redis7keeper的博客 572

第七天 Labview进阶(7.4 NI Vision简单使用)

NIVision机器视觉软件使用指南 摘要:NIVision是National Instruments推出的高效机器视觉软件,具有硬件无缝集成、图形化编程和工业级部署等优势。本文介绍了NIVision的安装步骤(需Vision Acquisition和Vision Development模块)及三个典型应用案例:1)实物检测通过IMAQCreate等模块实现物体识别与坐标定位;2)OCR检测利用IMAQOCR系列模块完成字符识别;3)几何模板匹配使用IMAQLearnGeometricPattern等模块实

weixin_38637405的博客 771

Flash 与 JavaScript的交互:JS与SWF的通讯方式

所谓通讯就是信息的交换,这里我们谈的是js与Flash之间的数据交换的几种方式:   1.Flashvars     Flashvars - Flash初始化信息的传递者,它由N组名值对组成;当你的flash文件需要某些初始信息的时候就需要用到它。    1)如果你使用标签嵌入Flash的方法,应像这样:<param name="flashvars" value="text=这是fl...

weixin_30917213的博客 189

MacBook Air老本重装系统

手里的这个本子型号是A1466,cpu i5,4G内存,硬盘ssd 120G。 重装系统可以在原系统上升级到更新版本,或者用U盘安装。 先确定,这个本子可以安装什么系统。 最权威的信息当然是apple的官网,地址:https://support.apple.com/zh-cn/HT211683 在“检查兼容性”中,可以依次检查每个系统兼容的硬件型号。Mojave是A1466能安装的最高版本。 确认兼容性后,下一步就是下载安装文件。还是这个页面稍下面一点可以找到。 这里告诉用户文件可以在什

bigwood99的博客 2万+

Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.5 V4L2 control的原理和实现

既然涉及到视频输入,就会有很多与 相关的效果,比如对比度、饱和度、色温、白平衡等等,这些都是通用的、必须的控制项,并且大多数仅需要设置一个整数值即可。 内核中已经为我们提供了这个控制类型的,我们只需要明确自己需要添加什么控制类型,然后将其添加进内核中即可。该部分摄像头代码一半厂家会提供驱动或者相对应的参数,否则没有图像处理知识很难开发出来。 返回总目录...

DSMGUOGUO的博客 1435

Js与flash交互:在html页面中用js与MyReport插件交互

Html页面与flash的加载如下图,flash是html页面的一个插件节点。 js与flash进行交互,首先要处理好html页面和swf的加载问题。Swf调用外部js方法,要确保js方法已存在,该条件一般都满足,因为swf加载比页面js慢。Js访问swf的接口时,要确保swf已经加载完成,该条件则需要做特殊的处理。如何做?可以想到的是,只

#六脉神剑的专栏 1万+

2026年国赛C题微网与外部电网电力调控策略 (三):问题三、问题四滚动预测、实时电价与结果核验

专栏内定期更新ABCDE五题详细思路、代码(含运行结果图)和讲解视频-(11号之前半价):问题三看起来只是多给了一个光伏预报附件,实质上它改变了整道题的信息结构:问题四则是在问题二、问题三之上替换价格来源。问题4-2相当于“确定性计划+实时电价”,问题4-3相当于“滚动预测+实时电价”。物理模型完全不变,改变的是价格序列和费用口径。本文先给出核心结果:从结果看,问题3比问题2多约164.21万元,问题4-3比问题4-2多约168.79万元。主要增量不是“储能没有工作”,而是预测误差、计划偏差和紧急购电造成的

YOLO 343

flex 监听浏览器关闭

//mxml下写入private function AppColse():void{ var str:String=ExternalInterface.call("window.onbeforeunload()");} //html下写入function window.onbeforeunload(){   var isclose=confirm("你确定要退出吗?");  

xuhuanchao的专栏 1594

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

flex4.5 TabNavigator自动加载于关闭子组件的实现

我还是新手实现的这么方法不是很简练,代码有点繁多。总之效果还是实现了具体步骤是这样的: 1.在住程序中拖入TabNavigator组件,并在外面创建两个Button作用是点击的时候TabNavigator将子对象添加到里面。 2.新建两个基于NavigatorContent的

fly_air的专栏 5132

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

flex 监听浏览器关闭或刷新

mxml内嵌代码: 应用加载完成注册一下:creationComplete="reg()"public function reg():void{ if(flash.external.ExternalInterface.available){ var jsStr:String; jsStr ...

weixin_33836223的博客 199

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Flash/Flex解决IE缓存,socket不能断开连接问题

如果我们在做在flash的在线游戏时,一般是希望用户在刷新这个页面或者关闭这个页面就断开socket连接。 一般的浏览器在关闭后,都是默认的断开socket连接的。 但是刷新就不一定了。IE总是不太听话,在刷新时不会断开原来的连接。这样一来,一个IE的页面就保持了两个连接! 很容易造成数据的错误! 还有一些未知的异常,都是因为这该死的IE引起的。 网上大部分都说,加头信息之类的

我是传奇 4183

flex调用javascript代码

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationCompl

GROWTH 908

flex actionscript 监听浏览器 刷新 后退 关闭 并且给出提示,刷新 离开提示

实现监听用户浏览器 刷新 后腿 和关闭. 并且给出提示 一个as 类. 代码如下: package com.thams.contextMenu.utils { import flash.external.ExternalInterface; public class BeforeunloadManager { static private const javascript:X...

MayMatrix 的博客 208

Flash Event事件流的三个阶段

显示列表中事件流的三个阶段在一个事件的整个生命周期内,共分为三个阶段(捕获阶段-->目标阶段-->冒泡阶段): 在捕获阶段与冒泡阶段均可能经过N个节点,在目标阶段仅可能有一个节点。 使用stopPropagation 可阻止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。使用stopImmediatePropagation 可阻止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。 显示列表中事件流三阶段与事件机制本身没有直接关系。在AS3显示列表中,为什么要有事件流,为什么不是直接到达目

wkyb608的专栏 2257

Flex4.5点击按钮关闭窗口

这个就是基于前两篇的,多添加了一个点击按钮关闭的程序。 代码部分: AS代码: package control {  import flash.events.MouseEvent;    import mx.events.CloseEvent;  import mx.events.FlexEvent;  import mx.managers.PopUpManager;

First_Xiaohu的专栏 3293

Flash 与 JS 交互

Flash/Flex监听浏览器的关闭事件由 Jack 撰写  http://blog.ityao.com/archives/581 如果想用Flash/Flex监听浏览器的关闭事件,可以通过JavaScript的window.onbeforeunload事件进行监听然后JS调用Flash中的函数。在swf所在页面的JavaScript中添加如下代码JS中代码:(这里设定swf文件名为TestFla...

weixin_30338497的博客 136

Flex/AS3/flash player支持屏蔽右键菜单,自定义菜单,并设置相应的菜单事件(示例,图解)

该文同步至http://www.waylau.com/217/     播放器 版本 11.2以后支持右键菜单屏蔽及自定义菜单 1.更新播放器 ,11.2 以上版本 http://download.macromedia.com/get/flashplayer/updaters/11/playerglobal11_3.swc http://download.macro

老卫的技术站 4512

flex removeEventListener MDIWINDOW 移除 timer

项目用了 MDIWindow   其中一个MDIWindow打开的时候会创建一个timer 定时去请求数据   问题是:当我把这个window关掉的时候 这个timer 还是会一直执行,而且再开一个这个window又会再新增一个timer 如此下去 会有很多timer   我还以为window关闭的时候会自动销毁,但是貌似网上说FLEX的GC有很多bug 而且很多对象不会被及时的GC

hexin373的专栏 1963

FLEX/FLASH BUILDER 进行AS项目开发需要注意的内存泄漏

要尽量使用弱引用。 1. 调用addEventListener方法时,useWeakReference标签使用默认值false。 2. 调用BindingUtils的bindProperty和bindSetter方法时,useWeakReference标签使用默认值false。 请注意:我并不清楚Flex 3中是否也是这样。 3. 调用ChangeWatcher.watc...

weixin_30314793的博客 154
上一篇: hibernate+oracle返回的ID和数据库的ID不一致
下一篇: FLEXmadel模态窗口透明度设置
avanry
博客等级 码龄20年 4粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值