HTMLLoader-Klasse

Adobe AIR 1.0 und höher

Die HTMLLoader -Klasse von Adobe AIR definiert das Anzeigeobjekt, das HTML-Inhalt in einer AIR-Anwendung anzeigen kann. SWF-basierte Anwendungen können dem vorhandenen Fenster ein HTMLLoader-Steuerelement hinzufügen oder ein HTML-Fenster erstellen, das automatisch ein HTMLLoader-Objekt mit HTMLLoader.createRootWindow() enthält. Der Zugriff auf das HTMLLoader-Objekt kann aus der geladenen HTML-Seite über die window.htmlLoader -JavaScript-Eigenschaft erfolgen.

Laden von HTML-Inhalten über eine URL

Mit dem folgenden Code wird eine URL in ein HTMLLoader-Objekt geladen (fügen Sie den HTMLLoader als ein untergeordnetes Element der Bühne oder eines anderen Anzeigeobjektcontainers hinzu, um den HTML-Inhalt in Ihrer Anwendung anzuzeigen):

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

Für die width - und height -Eigenschaft eines HTMLLoader-Objekts ist standardmäßig „0“ festgelegt. Diese Dimensionen sollten Sie beim Hinzufügen eines HTMLLoader-Objekts zum Stage-Objekt festlegen. Das HTMLLoader-Objekt löst beim Laden der Seite mehrere Ereignisse aus. Anhand dieser Ereignisse können Sie ermitteln, ob eine Interaktion mit der geladenen Seite sicher ist. Diese Ereignisse sind unter Verarbeiten HTML-bezogener Ereignisse in AIR beschrieben.

Hinweis: In der Flex-Architektur können nur Klassen, die über die UIComponent-Klasse hinausgehen, als untergeordnete Objekte von Flex-Containerkomponenten hinzugefügt werden. Daher können Sie ein HTMLLoader-Objekt nicht direkt als untergeordnetes Objekt einer Flex-Containerkomponente hinzufügen. Mit dem Flex mx:HTML-Steuerelement können Sie jedoch eine benutzerdefinierte Klasse erstellen, die UIComponent erweitert und ein HTMLLoader-Objekt als Unterobjekt von UIComponent enthält, oder Sie können das HTMLLoader-Objekt als Unterobjekt von UIComponent hinzufügen und diese dem Flex-Container hinzufügen.

Sie können HTML-Text auch mithilfe der TextField-Klasse rendern, diese hat jedoch nur einen begrenzten Funktionsumfang. Die TextField-Klasse von Adobe® Flash® Player unterstützt eine Untergruppe von HTML-Code, doch ist ihr Funktionsumfang aufgrund von Größenbeschränkungen begrenzt. (Die in Adobe AIR enthaltene HTMLLoader-Klasse ist in Flash Player nicht verfügbar.)

Laden von HTML-Inhalten aus einem String

Die loadString() -Methode eines HTMLLoader-Objekts lädt einen String des HTML-Inhalts in das HTMLLoader-Objekt:

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

Standardmäßig wird der über die loadString() -Methode geladene Inhalt in einer anwendungsfremden Sandbox mit den folgenden Merkmalen platziert:

  • Es kann Inhalt aus dem Netzwerk (nicht jedoch aus dem Dateisystem) geladen werden.

  • Mit XMLHttpRequest können keine Daten geladen werden.

  • Die window.location -Eigenschaft ist mit dem "about:blank" belegt.

  • Der Inhalt kann nicht auf die window.runtime -Eigenschaft zugreifen (wie Inhalt in beliebigen anwendungsfremden Sandboxes dies kann).

In AIR 1.5 enthält die HTMLLoader-Klasse eine placeLoadStringContentInApplicationSandbox -Eigenschaft. Wenn diese Eigenschaft für ein HTMLLoader-Objekt auf true eingestellt ist, wird Inhalt, der über die loadString() -Methode geladen wird, in der Anwendungs-Sandbox platziert. (Der Standardwert lautet false .) Damit erhält Inhalt, der über die loadString() -Methode geladen wird, Zugriff auf die window.runtime -Eigenschaft und auf alle AIR-APIs. Wenn Sie diese Eigenschaft auf true einstellen, stellen Sie sicher, dass die Datenquelle für einen String, der in einem Aufruf der loadString() -Methode verwendet wird, vertrauenswürdig ist. Code-Anweisungen im HTML-String werden mit vollständigen Anwendungsberechtigungen ausgeführt, wenn diese Eigenschaft den Wert true aufweist. Stellen Sie diese Eigenschaft nur dann auf true , wenn Sie sicher sein können, dass der String keinen schädigenden Code enthält.

In Anwendungen, die mit dem AIR 1.0- oder AIR 1.1-SDK kompiliert werden, wird über die loadString() -Methode geladener Inhalt in der Anwendungs-Sandbox platziert.

Wichtige Sicherheitsregeln beim Verwenden von HTML in AIR-Anwendungen

Die mit der AIR-Anwendung installierten Dateien haben Zugriff auf die AIR-APIs. Aus Sicherheitsgründen gilt dies nicht für Inhalt aus anderen Quellen. Diese Einschränkung verhindert zum Beispiel, dass Code aus einer Remotedomäne (wie z. B. http://example.com) den Inhalt des Desktopverzeichnisses eines Benutzers (oder sonstige vertrauliche Informationen) liest.

Aufgrund von Sicherheitslücken, die durch Aufrufen der eval() -Funktion (und zugehöriger APIs) ausgenutzt werden können, kann mit der Anwendung installierter Inhalt diese Methoden standardmäßig nicht verwenden. Einige Ajax-Architekturen rufen jedoch die eval() -Funktion und die zugehörigen APIs auf.

Für die ordnungsgemäße Strukturierung von Inhalt, damit er in einer AIR-Anwendung verwendet werden kann, müssen Sie die Regeln für Sicherheitsbeschränkungen für Inhalt aus unterschiedlichen Quellen berücksichtigen. Inhalt aus unterschiedlichen Quellen wird in separaten, als Sandboxen bezeichneten Sicherheitsklassifizierungen (siehe Sicherheits-Sandboxen ) abgelegt. Der mit der Anwendung installierte Inhalt wird standardmäßig in einer so genannten Anwendungs -Sandbox installiert. Damit hat er Zugriff auf die AIR-APIs. Die Anwendungs-Sandbox ist normalerweise die sicherste aller Sandboxen und ihre Beschränkungen verhindern die Ausführung nicht vertrauenswürdigen Codes.

Die Laufzeitumgebung ermöglicht es Ihnen, mit der Anwendung installierten Inhalt in einer von der Anwendungs-Sandbox abweichenden Sandbox zu laden. Inhalt in anderen Sandboxen befindet sich in einer Sicherheitsumgebung, die der Sicherheitsumgebung eines gängigen Webbrowsers ähnelt. Code in anwendungsfremden Sandboxen kann beispielsweise eval() und ähnliche Methoden verwenden (aber nicht auf die AIR-APIs zugreifen). Die Laufzeitumgebung umfasst Möglichkeiten, mit denen Inhalt in anderen Sandboxen sicher kommunizieren kann (z. B. ohne die AIR-APIs anwendungsfremdem Inhalt auszusetzen). Weitere Informationen finden Sie unter Cross-Scripting von Inhalten in unterschiedlichen Sicherheits-Sandboxen .

Wenn Sie Code aufrufen, dessen Verwendung in einer Sandbox aus Sicherheitsgründen beschränkt ist, löst die Laufzeitumgebung einen JavaScript-Fehler aus: „Adobe AIR runtime security violation for JavaScript code in the application security sandbox“ (Sicherheitsverstoß gegen Adobe AIR-Laufzeitumgebung für JavaScript-Code in der Sicherheits-Sandbox der Anwendung).

Halten Sie sich an die im nächsten Abschnitt, Vermeiden von sicherheitsbezogenen JavaScript-Fehlern , beschriebenen Kodierungspraktiken, um diesen Fehler zu vermeiden.

Weitere Informationen finden Sie unter HTML-Sicherheit in Adobe AIR .