2011-10-10 30 views
6

phép nói rằng tôi có một tập tin html có chứa một hình thức:elemnts Input trong HTMLLoader là readonly trong adobe AIR

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

chúng tôi có tải này tập tin html sử dụng HTMLLoader bên trong một tập tin swf.

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

Sau khi tải tệp Swf này bằng cách sử dụng Loader bên trong ứng dụng chính, hộp văn bản chỉ đọc và không thể nhập vào. Nhưng chúng ta có thể thay đổi trọng tâm của chúng bằng cách sử dụng chuột.

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

Sự cố là gì?

+0

Do các yếu tố hình thức HTML hoạt động tốt (tức là chấp nhận đầu vào bàn phím) nếu bạn trực tiếp xem các SWF đầu tiên (một trong đó có HTMLLoader) (như một SWF chính của ứng dụng AIR) mà không tải nó bên trong một SWF khác? Nếu có, thì vấn đề bạn đề cập trông giống như một lỗi trong AIR. – Ashutosh

+0

Ứng dụng của bạn có chạy ở chế độ toàn màn hình không? – weltraumpirat

+0

@Ashutosh: Vâng! – Jalal

Trả lời

0

Trình tải HTML có được đính kèm sau sự kiện Event.COMPLETE đã được kích hoạt không? Thậm chí có thể đáng để đợi tài liệu HTMLLoader kích hoạt sự kiện DOMReady trước khi đính kèm nó vào giai đoạn.

Hãy thử một cái gì đó như thế này:

_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); } 

Các Flex documentation about handling HTML events đề cập đến điều này:

Khi một người biết lắng nghe đề cập đến một phần tử DOM cụ thể, nó là tốt thực hành để chờ cho HTMLLoader cha mẹ văn sự kiện hoàn chỉnh trước khi thêm trình xử lý sự kiện. Các trang HTML thường tải nhiều tệp và DOM HTML không được xây dựng đầy đủ cho đến khi tất cả các tệp được được tải và phân tích cú pháp. Trình tải HTML gửi đi sự kiện hoàn chỉnh khi tất cả các phần tử đã được tạo.

Có thể HTMLLoader đang được đính kèm giai đoạn trước khi tài liệu thực sự sẵn sàng, điều này có thể giải thích một số điều kỳ lạ.

Nếu bạn có nhiều bất kỳ thông tin đó sẽ là một sự giúp đỡ tuyệt vời ...

0

Các giải pháp đề xuất ("chờ đợi sự kiện DOMContentLoaded trước addChild") không làm việc cho tôi.

Thay vào đó, nó hoạt động khi sử dụng trạng thái hiển thị FULL_SCREEN_INTERACTIVE. Theo Adobe's documentation about FULL_SCREEN:

"bàn phím tương tác được kích hoạt cho các thiết bị di động"

(tôi đoán đó là đó là hồ sơ người khác tàn tật như Desktop).

Trong khi FULL_SCREEN_INTERACTIVE:

Chỉ định rằng sân khấu đang ở chế độ toàn màn hình với bàn phím tương tác kích hoạt. Kể từ Flash Player 11.3, khả năng này được hỗ trợ trong cả ứng dụng AIR và các ứng dụng dựa trên trình duyệt.

Vì vậy, trong trường hợp của tôi là giải pháp là:

_stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE 
Các vấn đề liên quan