ExternalInterface callback 함수를 등록하고 JS->Flex 를 호출시에
시점문제를 발생시킵니다. 특히 IE에서 더욱 그런데요. 이것을 해결하기 위한 방법은 다른게 없더군요.
그저 통신이 가능한 시점을 찾아서 그 시점이후로 통신을 시키는겁니다.
1. Flex에 callback_checkExternalInterface()함수를 만든다.
2. JS에서 checkExternalInterface()함수를 만들고 Flex에서 만든 callback_checkExternalInterface()를 호출하여 그 반환값을 다시 반환하도록 만든다.
3. Flex에서 JS에서 callback_checkExternalInterface()함수를 호출 할 수 있도록 addCallback해준다.
4. Flex에서 Js의 checkExternalInterface()를 호출하여 성공할때까지 setTimeout을 돌린다.
5. 성공하면 JS에 통신가능하다는 함수를 호출해준다.(가령 checkExternalInterfaceComplete() JS 함수 호출)
6. JS는 checkExternalInterfaceComplete()내서부터 Flex-JS간에 통신이 시작되도록 한다.
[출처] ExternalInterface 사용시 ScriptTimeoutError 오류 해결방법? (FlexComponent) |작성자 anyman5
* setTimeout 으로 액션스크립트 타임아웃은 피했지만, js 에서 실질적인 리턴값이 오기 전까지는 사용자 입력을 안받고,
flex 화면을 잠궈둬야 한다면, 팝업메니저를 이용한다던지, 마우스 관련 이벤트를 cancel시켜버리는 등의 방법으로 modal 시키는 추가적인 작업이 필요할수 잇겟습니다.ㅎ
** 이렇게 ExternalInterface.call 이 js 가 종료( 또는 return ) 될 때까지 런타임이 멈춰잇는 것을 이용해서
Flex 가 지원하지 않는 동기방식의 통신의 우회적인 구현이 가능하더군요.
관련 포스트입니다. ㅎ.
http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=7184
[출처] ExternalInterface 사용시 ScriptTimeoutError 오류 해결방법? (FlexComponent) |작성자 차카게
ExternalInterface.call 은 동기식이라 리턴값이 있어야 해제된다고 한다. 리턴이 15초 동안 없어서 발생하는 에러 ㅠ
'Flex' 카테고리의 다른 글
navigatetourl 옵션 (0) | 2012.07.29 |
---|---|
flex-iframe window.open (0) | 2012.07.29 |
플렉스 이미지 자르기 (0) | 2012.07.29 |
Flex sdk 3.6 설치 (0) | 2012.07.29 |
Flex 이벤트 강제 발생 dispatchEvent (0) | 2012.07.29 |