Использование функции в Adobe Air - PullRequest
1 голос
/ 02 июля 2011

Привет, я только начал играть с Adobe Air. И я использую его с библиотекой JavaScript под названием Angular.

Однако в библиотеке есть строка, которая запускает песочницу Adobe Air:

fn = Function('s', code);

На странице поддержки Adobe Air есть это предложение:

Вызовы новой функции (param, body) могут быть заменены объявлением встроенной функции или использоваться только до обработки события загрузки страницы.

Не могли бы вы объяснить, что означает объявление встроенной функции и как его использовать в целом для достижения того же эффекта?

Спасибо

1 Ответ

3 голосов
/ 08 июля 2011

JavaScript-фреймворки, использующие eval и другие заблокированные методы, МОГУТ работать в Adobe Air, но не в изолированной программной среде приложения.

Подробности см. В этом документе, но, по сути, вы можете заставить это работать, загрузив страницу(s) которые используют каркас в качестве вторичного каркаса.Верхний фрейм в Air всегда считается изолированной программной средой приложения, тогда как любой другой фрейм работает в не-прикладном режиме и поэтому предоставляет доступ ко всем заблокированным методам javascript.

http://help.adobe.com/en_US/air/html/dev/air_htmldevguide.pdf

Ищите раздел «Обзор по настройке приложения на основе HTML»

Вот пример набора фреймов, который я использовал для решения этой проблемы

<body>

    <iframe src="/blank.html" width="100%" height="0" scrolling="no" id="top" ></iframe>
    <iframe src="http://www.example.com/air/home.html"  documentRoot="app:/" sandboxRoot="http://www.example.com/air" allowCrossDomainXHR="true" width="100%" height="720" scrolling="no" id="bottom">
    </iframe>

</body>

Волшебство заключается вАтрибуты documentRoot и sandboxRoot.Все, что установлено в качестве documentRoot, заменяет домен, используемый в sandboxRoot.Обратите внимание, что в результате sandboxRoot не обязательно должен быть допустимым путем.

В этом случае верхний фрейм загружает файл с именем blank.html из приложения в изолированную программную среду приложения, поэтому этот файл может вызыватьфункции файловой системы и т. д., которые имеет привилегия для изолированной программной среды приложения.

Второй кадр загрузит «home.html» из каталога приложения, но загрузит его в изолированную программную среду вне приложения, которая можетсодержит практически любой JavaScript-фреймворк, который будет работать в Safari 4 (при условии, что вы используете последнюю версию среды выполнения AIR).Однако этот кадр не может вызывать безопасные функции AIR, такие как доступ к файловой системе.

Если вы хотите вызывать функции файловой системы и другие безопасные методы из второго кадра, вам потребуется создать мост песочницы, который описан вдокумент, на который я ссылаюсь выше.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...