Flex监测浏览器关闭

在flex应用程序出事化之前(如creationComplete)加入:

flash.external.ExternalInterface.addCallback('windowCloseHandler',externalWindowCloseHandler);

回调函数:

function externalWindowCloseHandler():void {
  trace("关闭浏览器");//关闭前做一些事情
  Alert.show("关闭浏览器");
 }

在html页面的javascript脚本里加入:没有返回值所以屏蔽掉了弹出框,如果需要弹出框可以加上

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

var swfRef = document.Test|| window.Test; //获取swf的引用
if ( swfRef )  { 
 swfRef.windowCloseHandler(); // 调用Flash中的windowCloseHandler函数 
}

 

方法二:在as中写javascript

public function creationCompleteHandler(event:FlexEvent):void {
 if (flash.external.ExternalInterface.available) {
  var javascript:String;
  javascript = 'eval(\'window.onbeforeunload = onbeforeunloadHandler;' +
         'function onbeforeunloadHandler(){' +
      'var swfRef = document.' + FlexGlobals.topLevelApplication.className + '||window.' +
      FlexGlobals.topLevelApplication.className + ';' + 'swfRef.windowCloseHandler();' +'}\')';
  flash.external.ExternalInterface.call(javascript);
  flash.external.ExternalInterface.addCallback('windowCloseHandler', externalWindowCloseHandler);
  trace("javascript:" + javascript);
 }
}

 

//关闭浏览器时的清理工作
public function externalWindowCloseHandler():void {

//移除监听
 flash.external.ExternalInterface.call('eval(\'window.onbeforeunload = null\')');
 trace("浏览器关闭");
}

posted on 2012-11-29 10:20  一个石头  阅读(244)  评论(0)    收藏  举报