Script e acesso à URL de saída (por meio do uso de URLs HTTP, mailto: etc.) são executados com o uso das seguintes APIs do
-
A função
flash.system.fscommand()
-
O método
ExternalInterface.call()
-
A função
flash.net.navigateToURL()
Para o conteúdo carregado a partir do sistema de arquivos local, as chamadas para estes métodos são bem sucedidas se o código e a página web (se houver uma) estiverem nas áreas de segurança do aplicativo do AIR. Haverá falha em chamadas para esses métodos se o conteúdo estiver na caixa de proteção local com rede ou local com sistema de arquivos.
Para conteúdo não carregado localmente, todas essas APIs podem se comunicar com a página da Web na qual estão incorporados, dependendo do valor do parâmetro AllowScriptAccess descrito a seguir. A função
flash.net.navigateToURL()
tem a capacidade adicional de comunicação com qualquer janela ou quadro de navegador aberto, não apenas com a página na qual o arquivo SWF está incorporado. Para obter mais informações sobre essa funcionalidade, consulte
Uso da função navigateToURL()
.
O parâmetro
AllowScriptAccess
no código HTML que carrega um arquivo SWF controla a capacidade de executar acesso à URL a partir do arquivo SWF. Defina esse parâmetro dentro da tag PARAM ou EMBED. Se nenhum valor estiver definido para
AllowScriptAccess
, o arquivo SWF e a página HTML poderão se comunicar apenas se os dois forem do mesmo domínio.
O valor do parâmetro
AllowScriptAccess
pode ser um destes três valores possíveis:
"always"
,
"sameDomain"
ou
"never"
.
-
Quando
AllowScriptAccess
é
"always"
, o arquivo SWF pode se comunicar com a página HTML na qual ele está incorporado, mesmo quando o arquivo é de um domínio diferente da página HTML.
-
Quando
AllowScriptAccess
é
"sameDomain"
, o arquivo SWF pode se comunicar com a página HTML na qual ele está incorporado apenas quando o arquivo SWF está no mesmo domínio que a página HTML. Esse valor é o padrão de
AllowScriptAccess
. Use essa configuração, ou não defina um valor para
AllowScriptAccess
, para evitar que um arquivo SWF hospedado em um domínio acesse um script em uma página HTML proveniente de outro domínio.
-
Quando
AllowScriptAccess
está definido como
"never"
, um arquivo SWF não pode se comunicar com nenhuma página HTML. Usar este valor foi algo desaprovado deste o lançamento do Adobe Flash CS4 Professional. Ele não é recomendado e não deveria ser necessário se você não disponibiliza arquivos SWF não confiáveis de seu próprio domínio. Se for necessário servir arquivos SWF não confiáveis, a Adobe recomenda que seja criado um subdomínio diferente e que todo o conteúdo não confiável seja colocado nele.
Este é um exemplo de configuração da tag
AllowScriptAccess
em uma página HTML para permitir acesso à URL de saída para um domínio diferente:
<object id='MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%' width='100%'>
<param name='AllowScriptAccess' value='always'/>
<param name='src' value=''MyMovie.swf'/>
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf' height='100%' width='100%' AllowScriptAccess='never'/>
</object>
Uso da função navigateToURL()
Além da configuração de segurança especificada pelo parâmetro
allowScriptAccess
discutido acima, a função
navigateToURL()
tem um segundo parâmetro -
target
. O parâmetro
target
pode ser usado para especificar o nome de uma janela ou quadro HTML para o qual enviar a solicitação de URL. Restrições de segurança adicionais se aplicam a essas solicitações, e as restrições variarão se
navigateToURL()
estiver sendo usado como uma instrução de script ou de não script.
Para instruções de script, como
navigateToURL("javascript: alert('Hello from Flash Player.')")
, as seguintes regras são aplicadas.
-
Se o arquivo SWF for um arquivo confiável localmente, a solicitação terá êxito.
-
Se o destino for a página HTML na qual o arquivo SWF está incorporado, as regras de
allowScriptAccess
descritas acima serão aplicadas.
-
Se o destino contiver conteúdo carregado do mesmo domínio que o arquivo SWF, a solicitação terá êxito.
-
Se o destino contiver conteúdo carregado de um domínio diferente do arquivo SWF, e nenhuma das duas condições anteriores for atendida, haverá falha na solicitação.
Para instruções de não script (como HTTP, HTTPS e
mailto:
, haverá falha na solicitação se todas as condições a seguir se aplicarem:
-
O destino é uma das palavras-chave
"_top"
ou
"_parent"
e
-
o arquivo SWF é uma página da Web hospedada em um domínio diferente e
-
o arquivo SWF está incorporado com um valor de
allowScriptAccess
diferente de
"always"
.