2011-11-07 52 views
1

我尝试了Flex-JavaScript通信的这个示例。在下面的代码中检测JavaScript的关闭事件

但我无法实现它。请有人帮我一下吗?

这里是我的代码: main.mxml

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600"> 

    <mx:Script> 
     <![CDATA[ 

      import mx.controls.Alert; 
      private function callJavaScriptFunction():void { 
       if(ExternalInterface.available) 
       { 
        ExternalInterface.call("myBasicFunction"); 
       } 
       else 
       { 
        Alert.show("ExternalInterface unavailable"); 
       } 
      } 
     ]]> 
    </mx:Script> 
    <mx:Button label="click" click="callJavaScriptFunction()" x="200" y="200"/> 
</mx:Application> 

和JavaScript函数,我在写index.template.html目录html-template项目下。

<script> 

var win; 

function myBasicFunction() { 
    win = window.open('','','width=400,height=300'); 
    win.onbeforeunload=onUnloadHandler; 
} 

function onUnloadHandler() 
{ 
    alert("window closed"); 
} 
</script> 

<mx:Label id="lbl" useHandCursor="true" buttonMode="true" text="Google" selectable="true" mouseChildren="false" mouseEnabled="true" 
       mouseOver="{lbl.setStyle('textDecoration','underline'),lbl.setStyle('color','#0000FF')}" 
       mouseOut="{lbl.setStyle('textDecoration','none'),lbl.setStyle('color','#000000')}" 
       click="navigateToURL(new URLRequest('http://www.google.com'),'_blank')"/> 

回答

0

有两种可能性。

您可以检查与计时器调用一个开放的窗口checkOpen

var win; 
function myBasicFunction() { 
    win = window.open('','','width=200,height=100'); 
} 

function checkOpen() { 
    if (win.closed == true) { 
    alert("Window closed"); 
    } else { 
    alert("window still open"); 
    } 
} 

或者你也可以在打开的文档添加一个卸载事件处理程序和卸载事件处理程序中使用调用父窗口上的功能window.opener.closedHandler()。你的主窗口

function myBasicFunction() { 
    window.open('','','width=200,height=100'); 
} 

function myWindowClosedHandler() { 
    // code here 
} 

你打开的窗口守则

代码可能看起来像

<body unload="onUnloadHandler"> 

<script> 
    function onUnloadHandler() 
    { 
     window.opener.myWindowClosedHandler(); 
    } 
</script>