그래서 ExternalInterface 호출에서 값을 반환하는 데 문제가 있습니다. 다음과 같은 코드 조각이 있습니다.ExternalInterface가 AS3에서 IE에서 일관되게 작동하지 않습니다.
var a:String = String(ExternalInterface.call("function() { var returnTest = 'test'; alert(returnTest); return returnTest;}"));
ExternalInterface.call("alert", a);
첫 번째 경고 (1 행의 익명 함수에서)가 정확합니다 (분명히). 그러나 2 번 줄의 경고는 IE10에서 90 %의 시간을 null로 반환합니다. Firefox에서는 매번 작동합니다.
시간의 90 %를 작동하는 것에 대해 더 자세히 설명하기 위해 무의미한 경고를 추가하거나 제거하여 작동 여부에 관계없이 주사위를 다시 굴릴 수 있습니다. 예를 들어 작동하지 않는다고 가정 할 때 경고를 추가하면 작업이 시작됩니다. 또는 작동 중이라면 디버깅을위한 경고를 추가 할 수 있으며 작동을 멈추고 경고를 제거한 후에도 경고가 다시 나타나고 다시 작동하기 시작합니다. 나는 이것이 일어나고있는 것이 아니라는 것을 안다. 그러나 경고가 추가되거나 제거 될 때마다 동전이 뒤집힌 것처럼 행동한다.
그리고이 모든 것은 IE에서만 발생하며 Firefox에서 매번 완벽하게 작동합니다.
감사합니다.
편집 : 내가 제공 한 코드는 작동해야하는 실제 코드가 아니라 문제가 어디에 있었는지 확인하기 위해 작성한 코드입니다. 실제 상황은 플래시가 실행중인 환경에서 JavaScript 속성을 사용해야한다는 것입니다.하지만 SWF가 실행될 HTML이나 JavaScript에 액세스 할 수는 없습니다. 실제 코드를 실행해야합니다. 다음과 같이하십시오 :
var pageNameFromJS:String = String(ExternalInterface.call("function() { var pageName = ServerObject.currentPage.name; alert(pageName); return pageName;}"));
ExternalInterface.call("alert", pageNameFromJS);
첫 번째 줄의 경고는 ServerObject.currentPage.name이 작동하는지 확인하는 것입니다. 두 번째 줄의 경고는 pageNameFromJS가 필요한 기능이 작동하지 않는 것을 발견했을 때 추가 된 디버그 코드입니다.
som을 사용하여 시도하면 쓰레드를 걸지 않는 (예를 들어 경고를 사용하지 않고 html 요소의 텍스트를 추가하는 등) 100 % 시간이 걸리는가? AS3가 경고가 해제 될 때까지 기다리지 않는 것이 문제 일 수 있습니다. 그냥 야생 짐작하지만 – BadFeelingAboutThis
이것은 ExternalInterface를 사용하는 비정상적인 방법입니다. 적어도이 방법을 사용하지는 않았습니다. 첫 번째 줄의 응답을 두 번째 줄의 매개 변수로 전달하는 이유가 확실하지 않습니다. JavaScript에 대한 호출을 이미 작성한 경우 모든 것을 한 번에 실행하지 않는 이유는 무엇입니까? 자바 스크립트 기능은 어떻게 생겼습니까? –
나는 그 문제뿐만 아니라 내가 성취하려는 것을 더 잘 기술하기 위해 OP를 편집했다. LDMS : TextField 나 무언가의 색상을 변경하는 등 다른 변경 작업을 수행하면 "동전 던지기"도 가능합니다. – Surgery