2010-06-10 4 views
0

내 ExternalInterface에 문제가 있습니다.FireFox에서로드 업시 ExternalInterface 문제

현재 설정되는 방식은 페이지로드시 자바 스크립트에서 부울을 true로 설정하고 true가 될 때까지 (타이머를 사용하여) ActionScript 생성자에 의해 확인됩니다. 이는 자바 스크립트가 AS3에서 전화를받을 준비가되었음을 나타냅니다.

이 시점에서 AS3은 콜백을 추가하고 내부 작업을 수행하며 생성자 마지막 부분에서 JavaScript를 호출합니다. 여태까지는 그런대로 잘됐다. JavaScript는이 시점에서 AS3에서 함수를 호출합니다 (위에서 설명한 콜백에 정의되어 있음). 이것이 모두 엉망입니다.

IE에서 이것은 완벽하게 작동합니다. 하지만 FireFox에서는 그렇지 않습니다. 디버깅 할 때 javascript 함수가 호출 된 것을 볼 수 있지만 AS3을 호출하려고하면 아무 일도 일어나지 않습니다. 나 또한 타이머를 추가하려고했지만 어떤 이유로 IE에서 함수가 즉시 실행됩니다.

매우 이상한 점은 두 번째 또는이 후에 해당 기능이 작동하므로 Flash가 FireFox에 완전히로드되지 않은 것 같습니다. 하지만 그것은 내 생성자의 마지막 행까지 실행되므로로드 된 것으로 믿을 것입니다.

EDIT : 실제로 try/catch를했는데 JavaScript는 나에게 "TypeError : this.version은 함수가 아닙니다." "버전"에 대한 두 번째 호출은 실제로 작동 : 자바 스크립트가 작동 addFiles에서하는 getVersion()를 호출하면

AS3의 생성자에서 호출되어 초기화, 동안
Controller.init = function() { 
    try { 
     _mainController.getVersion(); // This one does not work 
    } 
    catch (err) { 
     error = err.toString(); 
    } 
} 


Controller.addFiles = function(JSON, numberOfFiles) { 
    alert(error); 

    try { 
     _mainController.getVersion(); // This one works 
    } 
    catch (err) { 
     alert(err.toString()); // This one is never called 
    } 
} 

, 그것은 정확한 (나중에 오류가 발생하지만 것 같은 기능).

어떤 아이디어라도 제게 정말 붙어 있습니다.

고마워, 루디

답변

0

당신은 Flash Ajax Bridge 더 많은 행운을 가질 수있다. JS가 AS3 파일을 제어 할 수 있도록 조정되어 다른 브라우저에서 연결하는 프로세스를 추상화 할 수 있습니다.

브라우저 커뮤니케이션에 대한 플러그인은 최상의 상태에서 고통 스럽습니다.

+0

저는 이것이 현재 Flash와 JavaScript 간의 경쟁 조건이라고 생각합니다. 제임스 대답에 감사드립니다. 불행히도 가능한 경우 Ajax Bridge를 사용하지 않을 것입니다. 아직 다른 솔루션을 찾지 못했지만 다른 해결책이있을 수 있기를 바랍니다. 감사. – Rudy

+0

Ajax Bridge는 사용 가능한 모든 오픈 소스이기 때문에 코드를 검사하는 것은 여전히 ​​가치가 있습니다. 타겟팅하는 브라우저에서 테스트되었으므로 문제를 어떻게 해결하고 있는지 확인할 수 있습니다. –

+0

오, 그래, 미안해. 나는 그것에 대해 생각하지 않았다. 고마워, 나는 그들이 그것을 어떻게하는지 볼 것이다. – Rudy

관련 문제