Sobre a classe HTMLLoader

Adobe AIR 1.0 e posterior

A classe HTMLLoader do Adobe AIR define o objeto de exibição que pode mostrar conteúdo HTML em um aplicativo do AIR. Os aplicativos baseados em SWF podem adicionar um controle HTMLLoader a uma janela existente ou criar uma janela HTML que contenha automaticamente um objeto HTMLLoader com HTMLLoader.createRootWindow() . O objeto HTMLLoader pode ser acessado por meio da propriedade window.htmlLoader de JavaScript de dentro da página HTML carregada.

Carregamento de conteúdo HTML de uma URL

O código a seguir carrega uma URL no objeto HTMLLoader (adicione o HTMLLoader como filho do estágio ou outro contêiner do objeto de exibição para exibir o conteúdo HTML no seu aplicativo):

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

Por padrão, as propriedades width e height de um objeto HTMLLoader são definidas como 0. Você desejará definir essas dimensões quando adicionar um objeto HTMLLoader ao palco. O HTMLLoader despacha diversos eventos à medida que a página carrega. Você pode usar esses eventos para determinar quando é seguro interagir com a página carregada. Esses eventos são descritos em Tratamento de eventos relacionados a HTML no AIR .

Nota: Na estrutura do Flex, somente as classes que estendem a classe UIComponent podem ser adicionadas como filhos de componentes do recipiente Flex. Por esse motivo, você não pode adicionar diretamente o HTMLLoader como filho de um componente do recipiente do Flex; no entanto, é possível usar o controle Flex mx:HTML; você pode criar uma classe personalizada que estende UIComponent e contém um HTMLLoader como filho do UIComponent ou pode adicionar o HTMLLoader como filho de um UIComponent e adicionar o UIComponent ao recipiente do Flex.

Você também pode processar texto HTML usando a classe TextField, mas os respectivos recursos são limitados. A classe Textfield do Adobe® Flash® Player oferece suporte a um subconjunto de markup de HTML, mas, devido a limitações de tamanho, os recursos respectivos são limitados. (A classe HTMLLoader incluída no Adobe AIR não está disponível no Flash Player.)

Carregamento de conteúdo HTML de uma sequência de caracteres

O método loadString() do objeto HTMLLoader carrega uma string de conteúdo HTML no objeto HTMLLoader:

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

Por padrão, o conteúdo carregado por meio do método loadString() é colocado em uma caixa de proteção que não é aplicativo com as seguintes características:

  • Ela tem acesso ao conteúdo carregado da rede (mas não do sistema de arquivos).

  • Ela não pode carregar dados usando XMLHttpRequest.

  • A propriedade window.location é definida como "about:blank" .

  • O conteúdo não pode acessar a propriedade window.runtime (como pode em qualquer caixa de proteção que não é aplicativo).

No AIR 1.5, a classe HTMLLoader inclui uma propriedade placeLoadStringContentInApplicationSandbox . Quando essa propriedade é definida como true para um objeto HTMLLoader, o conteúdo carregado pelo método loadString() é colocado na caixa de proteção do aplicativo. (O valor padrão é false .) Isso fornece ao conteúdo carregado pelo método loadString() acesso à propriedade window.runtime e a todas as APIs do ARI. Se você definir essa propriedade como true , assegure que a fonte de dados para uma sequência de caracteres usada em uma chamada para o método loadString() seja confiável. As instruções de código na sequência de caracteres HTML são executadas com privilégios totais de aplicativo quando essa propriedade é definida como true . Só defina a propriedade como true quando estiver certo de que a sequência de caracteres não possa conter código nocivo.

Em aplicativos compilados com SDKs do AIR 1.0 ou 1.1, o conteúdo carregado pelo método loadString() é inserido na caixa de proteção do aplicativo.

Regras de segurança importantes no uso de HTML em aplicativos AIR

Os arquivos instalados com o aplicativo do AIR têm acesso às respectivas APIs. Por motivos de segurança, o conteúdo de outras fontes não tem acesso. Por exemplo, essa restrição impede que conteúdo de um domínio remoto (como http://example.com) leia o conteúdo de diretório da área de trabalho do usuário (ou algo pior).

Como há buracos de segurança que podem ser explorados através da chamada da função eval() (e APIs relacionadas), o conteúdo instalado com o aplicativo, por padrão, não pode usar esses métodos. No entanto, algumas estruturas Ajax usam a chamada da função eval() e APIs relacionadas.

Para estruturar adequadamente o conteúdo para trabalhar em um aplicativo do AIR, você deve considerar as regras das restrições de segurança sobre conteúdo de fontes diversas. O conteúdo de fontes diversas é colocado em classificações de segurança distintas, chamadas de caixas de proteção (consulte Caixas de proteção de segurança ). Por padrão, o conteúdo instalado com o aplicativo está instalado em uma caixa de proteção conhecida como caixa de proteção de aplicativo e isso concede a ele acesso às APIs do AIR. Normalmente, a caixa de proteção do aplicativo é a mais segura, com restrições projetadas para impedir a execução de código não confiável.

O tempo de execução permite carregar o conteúdo instalado com o aplicativo em uma caixa de proteção diferente da caixa de proteção do aplicativo. O conteúdo em caixas de proteção que não são de aplicativo opera em um ambiente de segurança semelhante ao de um navegador da Web típico. Por exemplo, o código das caixas de proteção que não são de aplicativo pode usar eval() e métodos relacionados (mas, ao mesmo tempo, não é permitido acesso às APIs do AIR). O tempo de execução inclui maneiras de fazer com que o conteúdo em caixas de proteção distintas se comuniquem com segurança (sem expor, por exemplo, as APIs do AIR a conteúdo de não aplicativo). Para obter detalhes, consulte Conteúdo cross-scripting em caixas de proteção de segurança distintas .

Se você chamar um código com uso restrito em uma caixa de proteção por motivos de segurança, o tempo de execução despachará um erro JavaScript: "Violação de segurança de tempo de execução do Adobe AIR para código JavaScript na caixa de proteção de segurança do aplicativo."

Para evitar esse erro, siga as práticas de codificação descritas na próxima seção, Como evitar erros JavaScript relacionados à segurança .

Para obter mais informações, consulte Segurança HTML no Adobe AIR .