Om klassen HTMLLoader

Adobe AIR 1.0 och senare

Klassen HTMLLoader i Adobe AIR används för att definiera visningsobjektet som kan visa HTML-innehåll i ett AIR-program. SWF-baserade program kan lägga till en HTMLLoader-kontroll i ett befintligt fönster eller skapa ett HTML-fönster som automatiskt innehåller ett HTMLLoader-objekt med HTMLLoader.createRootWindow() . HTMLLoader-objektet kan nås via JavaScript-egenskapen window.htmlLoader i den inlästa HTML-sidan.

Läsa in HTML-innehåll från en URL

Följande kod läser in en URL i ett HTMLLoader-objekt (lägg till HTMLLoader-objektet som ett underordnat objekt till scenen eller till en annan behållare för visningsobjekt så att HTML-innehållet visas i programmet):

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

Egenskaperna width och height i ett HTMLLoader-objekt är som standard inställda på 0. Du måste ange de här måtten när du lägger till ett HTMLLoader-objekt i scenen. HTMLLoader skickar flera händelser när en sida läses in. Du kan använda de här händelserna för att avgöra när det går bra att interagera med den inlästa sidan. De här händelserna beskrivs i Hantera HTML-relaterade händelser i AIR .

Obs! I Flex-ramverket kan bara klasser som utökar klassen UIComponent läggas till som underordnade komponenter i en Flex-behållare. På grund av detta kan du inte lägga till ett HTMLLoader-objekt direkt som en underordnad komponent i en Flex-behållare. Du kan däremot använda Flex-kontrollen mx:HTML, skapa en anpassad klass som utökar UIComponent och innehåller ett HTMLLoader-objekt som är underordnat UIComponent och lägga till HTMLLoader som underordnat en UIComponent och lägga till UIComponent i Flex-behållaren.

Du kan också återge HTML-text med hjälp av klassen TextField, men dess funktioner är begränsade. Klassen TextField i Adobe® Flash® Player har stöd för en delmängd HTML-kod, men på grund av storleksbegränsningar har inte klassen så många funktioner. (Klassen HTMLLoader som ingår i Adobe AIR är inte tillgänglig i Flash Player.)

Läsa in HTML-innehåll från en sträng

Metoden loadString() i ett HTMLLoader-objekt läser in en sträng med HTML-innehåll i HTMLLoader-objektet:

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

Som standard placeras innehåll som du läser in med metoden loadString() i en icke-programsandlåda med följande egenskaper:

  • Innehåll kan läsas in från nätverket (men inte från filsystemet).

  • Data kan inte läsas in med hjälp av XMLHttpRequest.

  • Egenskapen window.location har värdet "about:blank" .

  • Innehållet har inte åtkomst till egenskapen window.runtime (som innehåll i andra icke-programsandlådor har).

I AIR 1.5 innehåller HTMLLoader-klassen egenskapen placeLoadStringContentInApplicationSandbox . När den här egenskapen har värdet true för ett HTMLLoader-objekt placeras innehåll som du läser in med metoden loadString() i programsandlådan. (Standardvärdet är false .) Det innebär att innehåll som lästs in med metoden loadString() har åtkomst till egenskapen window.runtime och till alla AIR-API:er. Om du ändrar värdet för den här egenskapen till true kontrollerar du att datakällan för strängen som används i anrop till loadString() -metoden är tillförlitlig. Kod i HTML-strängen körs med fullständig programbehörighet när den här egenskapen har värdet true . Använd bara värdet true för den här egenskapen om du är helt säker på att strängen inte kan innehålla skadlig kod.

I program som skapats med SDK-paket för AIR 1.0 eller AIR 1.1 placeras innehåll som du läser in med loadString() -metoden i programsandlådan.

Viktiga säkerhetsregler vid användning av HTML i AIR-program

De filer som du installerar med AIR-programmet har åtkomst till programmeringsgränssnitten i AIR. Av säkerhetsskäl gäller inte detta innehåll från andra källor. Den här begränsningen förhindrar till exempel innehåll från en fjärrdomän (t.ex. http://exempel.com) från att läsa innehållet i användarens skrivbordskatalog (eller ännu värre).

Eftersom det finns säkerhetsluckor som kan utnyttjas genom att anropa funktionen eval() (och tillhörande programmeringsgränssnitt), så är det innehåll som installeras tillsammans med programmet som standard begränsat och kan inte använda de här metoderna. Vissa Ajax-ramverk använder dock anrop av funktionen eval() och tillhörande programmeringsgränssnitt.

För att du ska kunna strukturera innehåll som ska användas och fungera i ett AIR-program, måste du ta hänsyn till de regler för säkerhetsbegränsning som finns för innehåll från olika källor. Innehåll från olika källor placeras i separata säkerhetsklasser, så kallade sandlådor (se Säkerhetssandlådor ). Innehåll som installeras med programmet installeras som standard i en sandlåda som kallas program sandlådan och det gör att innehållet får åtkomst till programmeringsgränssnitten i AIR. Programsandlådan är vanligtvis den säkraste sandlådan och dess begränsningar har utformats för att förhindra att otillförlitlig kod körs.

Runtime-modulen tillåter att du läser in innehåll som installerats med programmet i en annan sandlåda än programsandlådan. Innehåll i icke-programsandlådor används i en säkerhetsmiljö som liknar den som finns i en vanlig webbläsare. Kod i icke-programsandlådor kan till exempel använda eval() och andra relaterade metoder (men har ändå inte åtkomst till programmeringsgränssnitten i AIR). I runtime-modulen finns olika sätt att få innehåll i olika sandlådor att kommunicera på ett säkert sätt (utan att till exempel exponera programmeringsgränssnitt i AIR för icke-programinnehåll). Mer information finns i Korsskriptning av innehåll i olika säkerhetssandlådor .

Om du anropar kod som är begränsad från användning i en sandlåda av säkerhetsskäl skickar runtime-modulen ett JavaScript-fel av liknande typ: ”Säkerhetsöverträdelse i Adobe AIR vid körning av JavaScript-kod i programmets säkerhetssandlåda.”

Om du vill undvika det här felet följer du de kodningsrutiner som beskrivs i nästa avsnitt, Undvika säkerhetsrelaterade JavaScript-fel .

Du hittar mer information i HTML-säkerhet i Adobe AIR .