HTMLLoader中的输入元素在adobe AIR中是只读的

Jal*_*lal 6 html air loader actionscript-3

假设我有一个包含表单的html文件:

<form method="post" action="url">
    <input type="text" id="fullname" />
    <input type="text" id="bodyText" />
    <input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

我们HTMLLoader在swf文件中加载了这个html 文件.

_htmlLoader = new HTMLLoader();
_htmlLoader.paintsDefaultBackground = false;
var req:URLRequest = new URLRequest(urlValue);
_htmlLoader.load(req);
_stage.addChild(_htmlLoader);
Run Code Online (Sandbox Code Playgroud)

Loader主应用程序内部加载此Swf文件后,文本框是只读的,无法输入.但我们可以使用鼠标改变它们的焦点.

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

问题是什么?

And*_*dri 0

Event.COMPLETE事件触发后 HTMLLoader 是否被附加?甚至可能值得等待 HTMLLoader 的文档在将其附加到舞台之前触发 DOMReady 事件。

尝试这样的事情:

_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); }
Run Code Online (Sandbox Code Playgroud)

关于处理 HTML 事件的 Flex 文档提到了这一点:

当侦听器引用特定 DOM 元素时,最好等待父 HTMLLoader 分派完成事件,然后再添加事件侦听器。HTML 页面通常会加载多个文件,并且在加载并解析所有文件之前,HTML DOM 尚未完全构建。创建所有元素后,HTMLLoader 会调度complete 事件。

HTMLLoader 可能是在文档实际准备好之前附加到阶段的,这可能解释了一些奇怪的情况。

如果您有更多信息,那将是一个很棒的帮助......