2011-10-10 2 views
6

내가 양식을 포함하는 HTML 파일이 있다고 가정하자 :입력 elemnts는 읽기 전용 어도비 AIR에

<form method="post" action="url"> 
    <input type="text" id="fullname" /> 
    <input type="text" id="bodyText" /> 
    <input type="submit"> 
</form> 

우리가 부하 SWF 파일 내부에 HTMLLoader을 사용하여이 HTML 파일을.

_htmlLoader = new HTMLLoader(); 
_htmlLoader.paintsDefaultBackground = false; 
var req:URLRequest = new URLRequest(urlValue); 
_htmlLoader.load(req); 
_stage.addChild(_htmlLoader); 

주요 응용 프로그램 내에서 Loader을 사용하여이 SWF 파일을로드 한 후, 텍스트 상자는 읽기 전용이며, 그 안에 입력 할 수 없습니다. 그러나 마우스를 사용하여 포커스를 변경할 수 있습니다.

var loader1:Loader = new Loader(); 
loader1.load(new URLRequest("path to file.swf")); 
// ... 
this.addChild(loader1); 
// ... 

무엇이 문제인가?

+0

는 HTML 양식 요소가 잘 작동 수행 (예 : 키보드 입력이) 직접 첫 번째 SWF합니다 (하는 HTMLLoader이있는 하나)을 볼 경우 (같은 AIR 응용 프로그램의 기본 SWF)를 다른 SWF에로드하지 않고도? 그렇다면 언급 한 문제는 AIR의 버그처럼 보입니다. – Ashutosh

+0

응용 프로그램이 전체 화면 모드로 실행됩니까? – weltraumpirat

+0

@Ashutosh : 예! – Jalal

답변

0

Event.COMPLETE 이벤트가 발생한 후 HTMLLoader가 연결되어 있습니까? DOMReady 이벤트를 발생시키기 전에 HTMLLoader의 문서가 스테이지에 연결되기를 기다리는 것도 좋습니다. 이 같은

시도 뭔가 :

_htmlLoader = new HTMLLoader(); 
_htmlLoader.paintsDefaultBackground = false; 
var urlRequest:URLRequest = new URLRequest(urlRequest); 
_htmlLoader.addEventListener(Event.COMPLETE, completeHandler); 
_htmlLoader.load(urlRequest); 

function completeHandler(event:Event):void { _htmlLoader.window.document.addEventListener("DOMContentLoaded", readyHandler); } 

function readyHandler(event:Event):void { _stage.addChild(_htmlLoader); } 

Flex documentation about handling HTML events이 언급 :

수신기가 특정 DOM 요소를 참조, 파견에 HTMLLoader가 대기하는 것이 좋습니다 입니다 이벤트 리스너를 추가하기 전에 완전한 이벤트 . HTML 페이지는 종종 개의 파일을로드하며 모든 파일이로드되고 구문 분석 된 후 이 될 때까지 HTML DOM이 완전히 빌드되지 않습니다. 모든 요소가 만들어지면 HTMLLoader가 complete 이벤트를 전달합니다.

문서가 실제로 준비되기 전에 HTMLLoader가 스테이지에 연결되어있을 가능성이 있습니다. 이로 인해 일부 기묘함이 설명 될 수 있습니다. 당신은 굉장한 도움이 될 것입니다 더 이상 정보가있는 경우

...

0

제안 된 솔루션 ( "addChild 전에 DOMContentLoaded 이벤트를 기다린다") 나를 위해 작동하지 않았다.

대신 디스플레이 상태로 FULL_SCREEN_INTERACTIVE을 사용했습니다. Adobe's documentation about FULL_SCREEN에 따르면 :

(나는 그것이 데스크탑처럼 사용할 다른 프로파일의 추측) "키보드 상호 작용은 모바일 장치를 사용할 수있다."

FULL_SCREEN_INTERACTIVE 동안 :

키보드 상호 작용이 활성화와 스테이지가 전체 화면 모드 로 지정합니다. Flash Player 11.3부터이 기능은 AIR 응용 프로그램과 브라우저 기반 응용 프로그램에서 모두 지원됩니다.

그래서 내 경우에 해결책이었다 :

_stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE