О классе HTMLLoader

Adobe AIR 1.0 и более поздних версий

Класс HTMLLoader в Adobe AIR определяет экранный объект, который выводит HTML-содержимое в приложении AIR. В SWF-приложениях элемент управления HTMLLoader может быть добавлен в существующее окно, либо с помощью метода HTMLLoader.createRootWindow() может быть создано окно HTML, которое уже содержит объект HTMLLoader. Объект HTMLLoader доступен через свойство JavaScript window.htmlLoader из загруженной HTML-страницы.

Загрузка HTML-содержимого из URL

Следующий программный код загружает URL в объект HTMLLoader (добавьте HTMLLoader в качестве дочернего объекта к объекту Stage или другому контейнеру отображаемых объектов для вывода HTML-содержимого в приложении):

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

Свойства width и height объекта HTMLLoader по умолчанию равны 0. Эти значения можно установить при добавлении HTMLLoader в рабочую область. В процессе загрузки страницы объект HTMLLoader отправляет несколько событий. Они помогают определить, безопасно ли взаимодействие с загружаемой страницей. Эти события описаны в разделе Обработка в AIR событий HTML .

Примечание. В инфраструктуре Flex только классы-расширения класса UIComponent могут добавляться в качестве дочерних для компонентов Container. По этой причине объект HTMLLoader не может быть добавлен как дочерний для компонента Container, но элемент управления Flex mx:HTML может использоваться для создания заказного класса-расширения UIComponent, содержащего HTMLLoader в качестве дочернего объекта UIComponent. Также можно добавить объект HTMLLoader в качестве дочернего элемента UIComponent, а UIComponent добавить в контейнер Flex.

Визуализацию HTML-текста можно осуществлять с помощью класса TextField, но его возможности ограничены. Класс TextField проигрывателя Adobe® Flash® поддерживает HTML-разметку, но из-за ограничения по размеру его возможности урезаны. (Класс HTMLLoader в среде Adobe AIR недоступен в проигрывателе Flash Player.)

Загрузка HTML-содержимого из строки

Метод loadString() объекта HTMLLoader загружает строку HTML-содержимого в объект HTMLLoader:

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

По умолчанию содержимое, загруженное с помощью метода loadString() , помещается в изолированную программную среду вне приложения, имеющую следующие характеристики.

  • В ней предусмотрена возможность доступа для загрузки содержимого из сети (но не из файловой системы).

  • Она не может загружать данные с помощью XMLHttpRequest.

  • Для свойства window.location установлено значение "about:blank" .

  • Для содержимого недоступно свойство window.runtime (как и для содержимого любых изолированных программных сред вне приложения).

В Adobe AIR 1.5 класс HTMLLoader включает свойство placeLoadStringContentInApplicationSandbox . Если этому свойству для объекта HTMLLoader установлено значение true , то содержимое, загружаемое методом loadString() , помещается в изолированную программную среду приложения. (Значение по умолчанию равно false .) Это обеспечивает для содержимого, загруженного методом loadString() , доступ к свойству window.runtime и ко всем прикладным интерфейсам программирования AIR. Если для этого свойства устанавливается значение true , убедитесь в надежности источника данных для строки, используемой при вызове метода loadString() . Инструкции программных кодов в строке HTML выполняются со всеми правами приложения, если для этого свойства задано значение true . Устанавливайте для этого свойства значение true только в том случае, если уверены, что данная строка содержит безопасный программный код.

В приложениях, компилируемых с помощью пакетов SDK из AIR 1.0 или AIR 1.1, содержимое, загруженное методом loadString() , помещается в изолированную программную среду приложения.

Меры безопасности при использовании HTML в приложениях AIR

Файлы, установленные в приложение AIR, имеют доступ к API-интерфейсам AIR. Из соображений безопасности содержимое из других источников не имеет такого доступа. Например, это ограничение не позволяет содержимому с удаленного домена (например, http://example.com) читать содержимое каталога рабочего стола пользователя (и ниже по иерархии).

Из-за брешей в безопасности циклов, которые благодаря функции eval() (и связанным API-интерфейсам) могут быть использованы злоумышленником, содержимое, установленное вместе с приложением по умолчанию, не имеет доступа к этим методам. Однако в некоторых инфраструктурах Ajax используется вызов функции eval() и связанных API.

Для правильного структурирования содержимого приложения AIR следует учитывать правила безопасности и ограничения, накладываемые на каждый из типов содержимого. Содержимое из различных источников размещается отдельно в соответствии с требованиями безопасности в так называемые изолированные программные среды (см. раздел Изолированные программные среды ). По умолчанию содержимое, устанавливаемое вместе с приложением, помещается в изолированную программную среду приложения , что дает ему доступ к API-интерфейсам AIR. Изолированная программная среда приложения является самой защищенной из всех, так как накладываемые на нее ограничения предотвращают внедрение небезопасного кода.

Среда выполнения позволяет загружать содержимое, установленное вместе с приложением, и в другие изолированные программные среды (вне приложения). Степень безопасности в изолированных программных средах вне приложения схожа со средой веб-обозревателя. Например, код в изолированной программной среде вне приложения может использовать функцию eval() и похожие методы (но не имеет доступа к API-интерфейсам AIR). Среда выполнения позволяет содержимому в разных изолированных программных средах взаимодействовать без открытия API-интерфейсов AIR содержимому извне приложения. Дополнительные сведения см. в разделе Перекрестное выполнение сценариев в содержимом из различных изолированных программных сред безопасности .

При вызове кода, который из соображений безопасности не может использоваться в изолированной программной среде, среда выполнения отправляет ошибку JavaScript: «Нарушение безопасности среды выполнения Adobe AIR для кода JavaScript в изолированной программной среде приложения».

Чтобы этого не происходило, следуйте рекомендациям в следующем разделе Избежание ошибок безопасности в JavaScript .

Дополнительные сведения см. в разделе « Безопасность HTML в Adobe AIR .