Para permitir que el contenido de aplicación use scripts entre contenidos cargados fuera del directorio de instalación de la aplicación, se pueden utilizar los elementos
frame
o
iframe
para cargar el contenido de aplicación en el mismo entorno limitado de seguridad que el contenido externo. Si no necesita usar el script entre contenido remoto, pero aún desea cargar una página de su aplicación fuera del entorno limitado de la aplicación, puede usar la misma técnica, especificando
http://localhost/
o cualquier otro valor inofensivo como el dominio de origen.
AIR añade los nuevos atributos,
sandboxRoot
y
documentRoot
, al elemento frame que permite especificar si el archivo de aplicación cargado en el fotograma se debe asignar a un entorno limitado que no pertenece a la aplicación. Los archivos que se resuelven en una ruta debajo de la URL
sandboxRoot
se cargan desde el directorio
documentRoot
. Por razones de seguridad, el contenido de aplicación cargado de este modo se lo trata como si se cargara desde una URL
sandboxRoot
.
La propiedad
sandboxRoot
especifica la URL que se debe utilizar para determinar el entorno limitado y dominio donde colocar el contenido del fotograma. Se deben utilizar los esquemas de URL
file:
,
http:
o
https:
. Si se especifica una URL relativa, el contenido permanece en el entorno limitado de la aplicación.
La propiedad
documentRoot
especifica el directorio desde donde cargar el contenido de fotograma. Se deben utilizar los esquemas de URL
file:
,
app:
o
app-storage:
.
En el siguiente ejemplo se asigna el contenido instalado en el subdirectorio
sandbox
de la aplicación para que se ejecute en el entorno limitado remoto y en el dominio
www.example.com
:
<iframe
src="http://www.example.com/local/ui.html"
sandboxRoot="http://www.example.com/local/"
documentRoot="app:/sandbox/">
</iframe>
La página
ui.html
podría cargar un archivo javascript desde la carpeta local
sandbox
utilizando la siguiente etiqueta de script:
<script src="http://www.example.com/local/ui.js"></script>
Asimismo, podría cargar el contenido desde un directorio en el servidor remoto utilizando una etiqueta de script como la siguiente:
<script src="http://www.example.com/remote/remote.js"></script>
La URL
sandboxRoot
enmascara cualquier contenido en la misma URL en el servidor remoto. En el ejemplo anterior, no se podría acceder a ningún contenido remoto en
www.example.com/local/
(ni a ninguno de los subdirectorios) dado que AIR vuelve a asignar la petición al directorio local de la aplicación. Se vuelven a asignar las peticiones independientemente si derivan de la navegación de una página, de XMLHttpRequest o de cualquier otro medio de carga de contenido.