Informacje o klasie HTMLLoader

Adobe AIR 1.0 i starsze wersje

Klasa HTMLLoader środowiska Adobe AIR definiuje obiekt wyświetlany, który może w aplikacji AIR wyświetlać treść HTML. Aplikacje w formacie SWF mogą dodawać element sterowania HTMLLoader do istniejącego okna lub tworzyć okno HTML, które automatycznie zawiera obiekt HTMLLoader z metodą HTMLLoader.createRootWindow() . Do obiektu HTMLLoader dostęp można uzyskać za pomocą właściwości window.htmlLoader JavaScript z załadowanej strony HTML.

Ładowanie treści HTML z adresu URL

Poniższy kod ładuje adres URL do obiektu HTMLLoader (dodaje obiekt HTMLLoader jako obiekt potomny stołu montażowego lub innego kontenera obiektu wyświetlanego w celu wyświetlenia treści HTML w aplikacji):

import flash.html.HTMLLoader; 
 
var html:HTMLLoader = new HTMLLoader; 
html.width = 400; 
html.height = 600; 
var urlReq:URLRequest = new URLRequest("http://www.adobe.com/"); 
html.load(urlReq);

Obie właściwości width i height obiektu HTMLLoader domyślnie ustawione są na wartość 0. Programista ustawia te wymiary podczas dodawania obiektu HTMLLoader na stół montażowy. W czasie ładowania strony obiekt HTMLLoader wywołuje kilka zdarzeń. Zdarzeń tych można użyć do określenia, kiedy bezpieczna jest interakcja z załadowaną stroną. Zdarzenia opisane zostały w rozdziale Obsługa zdarzeń powiązanych z HTML w środowisku AIR .

Uwaga: W środowisku Flex tylko klasy, które rozszerzają klasę UIComponent można dodawać jako elementy podrzędne składników Flex Container. Z tego powodu nie można bezpośrednio dodawać obiektu HTMLLoader jako elementu podrzędnego składnika Flex Container. Można jednak użyć elementu sterującego Flex mx:HTML, aby zbudować własną klasę, która rozszerza klasę UIComponent i zawiera obiekt HTMLLoader jako element podrzędny klasy UIComponent, a także dodać obiekt HTMLLoader jako element podrzędny klasy UIComponent i dodać klasę UIComponent do kontenera Flex.

Programista może także renderować tekst HTML za pomocą klasy TextField, ale jej możliwości są ograniczone. Klasa TextField programu Adobe® Flash® Player obsługuje podzestaw znaczników HTML, jednak ze względu na ograniczenia rozmiaru ograniczone zostały jej możliwości. (Klasa HTMLLoader zawarta w środowisku Adobe AIR jest niedostępna w programie Flash Player).

Wczytywanie zawartości HTML z ciągu znaków

Metoda loadString() obiektu HTMLLoader ładuje ciąg znaków treści HTML do obiektu HTMLLoader:

var html:HTMLLoader = new HTMLLoader(); 
var htmlStr:String = "<html><body>Hello <b>world</b>.</body></html>"; 
html.loadString(htmlStr);

Domyślnie treść załadowana za pomocą metody loadString() jest umieszczana w nieaplikacyjnym obszarze izolowanym o następujących cechach:

  • Obszar izolowany ma dostęp z sieci do ładowanej treści (ale nie z systemu plików).

  • Obszar izolowany nie może ładować danych za pomocą XMLHttpRequest.

  • Właściwość window.location ma wartość "about:blank" .

  • Treść nie może mieć dostępu do właściwości window.runtime (analogicznie treść w dowolnym nieaplikacyjnym obszarze izolowanym może).

W środowisku AIR 1.5 klasa HTMLLoader zawiera właściwość placeLoadStringContentInApplicationSandbox . Jeśli ta właściwość ma wartość true dla obiektu HTMLLoader, treść załadowana za pomocą metody loadString() jest umieszczona w obszarze izolowanym aplikacji. (Wartością domyślną jest false .) Daje to dostęp treści załadowanej za pomocą metody loadString() do właściwości window.runtime oraz do wszystkich interfejsów API środowiska AIR. Jeśli dla tej właściwości zostanie ustawiona wartość true , należy upewnić się, że źródło danych dla ciągu znaków użyte w wywołaniu metody loadString() jest zaufane. Instrukcje kodu w ciągu znaków HTML są wykonywane z pełnymi uprawnieniami aplikacji, jeśli ta właściwość ma wartość true . Tę właściwość należy ustawić na wartość true tylko wtedy, gdy użytkownik ma pewność, że ciąg znaków nie zawiera szkodliwego kodu.

W aplikacjach skompilowanych za pomocą programu AIR 1.0 SDK lub AIR 1.1 SDK treść załadowana za pomocą metody loadString() jest umieszczana w obszarze izolowanym aplikacji.

Ważne reguły zabezpieczeń podczas używania kodu HTML w aplikacjach AIR

Pliki instalowane z aplikacją AIR mają dostęp do interfejsu API środowiska AIR. Ze względów bezpieczeństwa treść z innych źródeł nie ma tego dostępu. Na przykład: ograniczenie to uniemożliwia treści ze zdalnej domeny (np. http://example.com) na odczyt treści z katalogu pulpitu użytkownika (lub gorzej).

Ponieważ istnieją luki bezpieczeństwa, które mogą zostać wykorzystane przez wywołanie funkcji eval() (i powiązane interfejsy API), domyślnie treść zainstalowana z aplikacją została ograniczona przed używaniem tych metod. Jednak niektóre środowiska Ajax używają funkcji eval() i powiązanych interfejsów API.

Aby poprawnie zbudować treść do pracy w aplikacji AIR, należy wziąć pod uwagę reguły ograniczeń bezpieczeństwa dla treści z różnych źródeł. Treść z różnych źródeł umieszczana jest w oddzielnych klasyfikacjach bezpieczeństwa nazywanych obszarami izolowanymi (patrz Obszary izolowane ). Domyślnie treść instalowana z aplikacją instalowana jest w obszarze izolowanym nazywanym obszarem izolowanym aplikacji , co daje jej dostęp do interfejsów API środowiska AIR. Obszar izolowany aplikacji jest zazwyczaj najbezpieczniejszym obszarem izolowanym z ograniczeniami zaprojektowanymi do zapobiegania wykonania niezaufanego kodu.

Środowisko wykonawcze umożliwia załadowanie treści zainstalowanej z aplikacją do obszaru izolowanego innego niż obszar izolowany aplikacji. Treść w nieaplikacyjnym obszarze izolowanym działa w środowisku bezpieczeństwa podobnym do środowiska typowej przeglądarki internetowej. Na przykład: kod w nieaplikacyjnym obszarze izolowanym może użyć funkcji eval() i powiązanych metod (ale w tym samym czasie dostęp do interfejsów API środowiska AIR jest niedozwolony). Środowisko wykonawcze zawiera różne sposoby na bezpieczną komunikację treści z innych obszarów izolowanych (np. bez udostępniania interfejsów API środowiska AIR dla treści nieaplikacyjnej). Szczegóły zawiera sekcja Treść odwołująca się do skryptów w różnych bezpiecznych obszarach izolowanych .

Jeśli wywołany zostanie kod, którego użycie zostało ograniczone ze względów bezpieczeństwa, środowisko wykonawcze zgłosi błąd JavaScript o treści podobnej do następującej: „Naruszenie zabezpieczeń środowiska wykonawczego Adobe AIR dla kodu JavaScript w obszarze izolowanym zabezpieczeń aplikacji”.

Aby uniknąć tego błędu, należy zastosować praktyki kodowania opisane w kolejnej sekcji — Unikanie błędów JavaScript związanych z zabezpieczeniami .

Więcej informacji zawiera sekcja Zabezpieczenia HTML w środowisku Adobe AIR .