어이, 그래서 나는 그것을 자주 사용하기 때문에 ExternalInterface가 이상하게 작동하는 데 많은 어려움을 겪고있다.ExternalInterface
내가 너무 오랫동안보고 있었으므로 놓친 것 같습니다.
flash_ready 함수가 올바르게 objectID를 반환하고 있으며 내가 말할 수있는 한 모든 것이 순서대로 처리됩니다.
불행히도 실행할 때 기본적으로 document.getElementById (<movename>
) .test()가 유효한 방법이 아니라는 오류가 표시됩니다 (브라우저에 따라 다름). 여기
자바 스크립트 (생성)
function flash_ready(i){
document.getElementById(i).test('success!');
}
삽입 HTML :
<script type="text/javascript">
swfobject.embedSWF("/chainmaille/includes/media/flash/upload_image.swf", "/chainmaille/includes/media/flash/upload_image", "500", "50", "9.0.0","expressInstall.swf", {}, {allowScriptAccess:'always', wmode:'transparent'},{id:'uploader_flash',name:'uploader_flash'});
</script>
<object type="application/x-shockwave-flash" id="uploader_flash" name="uploader_flash" data="/chainmaille/includes/media/flash/upload_image.swf" width="500" height="50"><param name="allowScriptAccess" value="always"><param name="wmode" value="transparent"></object>
AS3 :
package com.jesseditson.uploader {
import flash.display.MovieClip;
import flash.external.ExternalInterface;
import flash.system.Security;
public class UI extends MovieClip {
// Initialization:
public function UI() {
Security.allowDomain('*');
ExternalInterface.addCallback("test", test);
var jscommand:String = "flash_ready('"+ExternalInterface.objectID+"');";
var url:URLRequest = new URLRequest("javascript:" + jscommand + " void(0);");
navigateToURL(url, "_self");
}
public function test(t){
trace(t);
}
}
}
Swfobject 구글 코드를 통해 포함되는
, 그리고 th 플래시는 문제가되지 않습니다.
다른 서버에서 작동하는 설정이 매우 비슷하지만이 설정이 작동하지 않는 것 같습니다. 그것은 Hostgator 공유 서버입니다. 서버의 결함 일 수 있습니까? 누구든지 명백한 구문 문제를 보았습니까? 사전에
감사합니다!
그것은 수 없습니다 도움이? –
플래시 (flash)가로드 될 때까지는 test_ (t)가 호출되지 않습니다. flash_ready() 함수는 플래시 자체에서 호출되기 때문입니다. 그게 의미가 있는지 모르겠지만 여기에 흐름이 있습니다 : UI가 인스턴스화 됨 -> 생성자 (UI) -> flash_ready()가 -> test()를 호출했습니다 사실 플래시는 javascript를 통해 테스트 함수를 호출하므로 테스트가 정의되어야합니다. 네? – Jesse
모든 브라우저에서이 작업을 수행합니까? 나는 때때로 철저하게 IE에서 결함을 얻는다. –