2011-11-07 108 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>