O atributo
documentRoot
especifica o diretório local a partir do qual carregar URLs que procuram endereços para arquivos no local especificado por
sandboxRoot
.
Ao consultar endereços de URLs, no atributo
src
do frame ou no conteúdo carregado no frame, a parte da URL que corresponde ao valor especificado em
sandboxRoot
é substituída pelo valor especificado em
documentRoot
. Portanto, na seguinte tag de frame:
<iframe src="http://www.example.com/air/child.html"
documentRoot="app:/sandbox/"
sandboxRoot="http://www.example.com/air/"/>
child.html
é carregado do subdiretório
sandbox
da pasta de instalação do aplicativo. Os endereços das URLs relativas em
child.html
são procurados com base no diretório
sandbox
. Observe que qualquer arquivo no servidor remoto em
www.example.com/air
não pode ser acessado no frame, uma vez que o AIR tentaria carregá-lo do diretório app:/sandbox/.
Especifica um manipulador de eventos para o evento
dominitialize
de um frame. Esse é um evento específico do AIR disparado quando os objetos window e document do frame tiverem sido criados, mas antes que qualquer script tenha sido analisado ou elementos document tenham sido criados.
O frame despacha o evento
dominitialize
cedo o suficiente na sequência de carregamento de forma que qualquer script na página filha possa se referir a objetos, variáveis e funções adicionadas ao documento filho pelo manipulador
dominitialize
. A página pai deve estar na mesma caixa de proteção da filha para adicionar ou acessar diretamente qualquer objeto em um documento filho. No entanto, um pai na caixa de proteção do aplicativo pode estabelecer uma ponte de caixa de proteção para se comunicar com conteúdo em uma caixa de proteção que não seja de aplicativo.
Os exemplos a seguir ilustram o uso da tag iframe no AIR:
Coloque
child.html
em uma caixa de proteção remota, sem mapear para um domínio real em um servidor remoto:
<iframe src="http://localhost/air/child.html"
documentRoot="app:/sandbox/"
sandboxRoot="http://localhost/air/"/>
Coloque
child.html
em uma caixa de proteção remota, permitindo XMLHttpRequests apenas para
www.example.com
:
<iframe src="http://www.example.com/air/child.html"
documentRoot="app:/sandbox/"
sandboxRoot="http://www.example.com/air/"/>
Coloque
child.html
em uma caixa de proteção remota, permitindo XMLHttpRequests para qualquer domínio remoto:
<iframe src="http://www.example.com/air/child.html"
documentRoot="app:/sandbox/"
sandboxRoot="http://www.example.com/air/"
allowCrossDomainXHR="allowCrossDomainXHR"/>
Coloque
child.html
em uma caixa de proteção local com sistema de arquivos:
<iframe src="file:///templates/child.html"
documentRoot="app:/sandbox/"
sandboxRoot="app-storage:/templates/"/>
Coloque
child.html
em uma caixa de proteção remota, usando o evento
dominitialize
para estabelecer uma ponte de caixa de proteção:
<html>
<head>
<script>
var bridgeInterface = {};
bridgeInterface.testProperty = "Bridge engaged";
function engageBridge(){
document.getElementById("sandbox").parentSandboxBridge = bridgeInterface;
}
</script>
</head>
<body>
<iframe id="sandbox"
src="http://www.example.com/air/child.html"
documentRoot="app:/"
sandboxRoot="http://www.example.com/air/"
ondominitialize="engageBridge()"/>
</body>
</html>
O seguinte documento
child.html
ilustra como o conteúdo filho pode acessar a ponte de caixa de proteção pai:
<html>
<head>
<script>
document.write(window.parentSandboxBridge.testProperty);
</script>
</head>
<body></body>
</html>
Para obter mais informações, consulte
Conteúdo cross-scripting em caixas de proteção de segurança distintas
e
Segurança HTML no Adobe AIR
.