2009-03-14 5 views
0

우리는 Flex 어플리케이션이 서버와 대화하고 있습니다. FlexEvent.ON_BROWSER_WINDOW_CLOSE 이벤트가 필요하지만, 불행히도 Flex에서는 이러한 이벤트를 제공하지 않습니다.자바 스크립트 이벤트 양식을 구독하는 방법 플렉스 3 액션 스크립트 코드?

그래서 javascript "onbeforeunload"이벤트를 catch하고 ExternalInterface-registred 메소드를 통해 플래시 클라이언트를 호출하라는 조언을 받았습니다.

자바 스크립트 코드없이 자바 스크립트 이벤트를 구독 할 수있는 방법이 있습니까?

업데이트 나는 플래시 앱 호스팅 페이지를 늘리고 싶습니다. 확실히 우리는 외부 자바 스크립트 파일로 관리 할 수 ​​있지만 여전히 명확하지 않습니다.

답변

2

은 SWF 파일에 삽입이 완전히 우리가하고있는됩니다

package 
{ 

import flash.display.Sprite; 
import flash.external.ExternalInterface; 
import flash.net.SharedObject; 


public class CloseTest extends Sprite 
{ 
    private var so:SharedObject = SharedObject.getLocal("hello"); 

    public function CloseTest() 
    { 
     if (ExternalInterface.available) 
     { 
      ExternalInterface.addCallback("onclose", onClose); 
      ExternalInterface.call(this.javascript); 
     } 

     this.so.data.count ||= 0; 

     trace(so.data.count); 
    } 

    private function onClose():void 
    { 
     this.so.data.count++; 
     this.so.flush(); 
     this.so.close(); 
    } 

    private var javascript:XML = <javascript><![CDATA[function() 
    { 
     window.onbeforeunload = function() 
     { 
      alert("hello"); 
      document.getElementById("CloseTest").onclose(); 
     } 

    }]]></javascript>; 
} 

} 
2

ExternalInterface를 사용하여 컨테이너에 정의 된 Javascript 함수를 호출 할 수 있습니다. this을 참조하십시오.

This 게시물은 나와 비슷한 상황을 나타냅니다. 보세요.

+0

. 그러나 그것은 브라우저 자바 스크립트가 호스팅 페이지에 있어야합니다. –

+0

자바 스크립트가 활성화되어 있지 않은 경우에도 원하는 이벤트가 계속 나타 납니까? 그리고 만약 그렇다면, 한두 줄에 넣지 않으시겠습니까? – dirkgently

0

죄송합니다. Javascript 및 ExternalInterface를 사용하지 않고 찾고자하는 것을 할 수있는 방법이 없습니다. 당신은 JS 코드를 컴파일 할 수 있습니다