O pacote flash.net contém funções de nível de pacote para abrir uma nova janela de navegador, enviar uma solicitação de URL a um servidor e tratamento de cópias de classes.
Função | Definido por | ||
---|---|---|---|
Procura uma classe que tinha um alias registrado através de uma chamada ao método registerClassAlias(). | flash.net | ||
Abre ou substitui uma janela no aplicativo que contém o contêiner do Flash Player (geralmente um navegador). | flash.net | ||
Preserva a classe (tipo) de um objeto quando esse objeto é codificado em AMF (Action Message Format). | flash.net | ||
Envia uma solicitação de URL a um servidor, mas ignora qualquer resposta. | flash.net |
getClassByAlias | () | função |
public function getClassByAlias(aliasName:String):Class
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Procura uma classe que tinha um alias registrado através de uma chamada ao método registerClassAlias()
.
Esse método não interage com o método flash.utils.getDefinitionByName()
.
Parâmetros
aliasName:String — O alias a ser localizado.
|
Class — A classe associada ao alias especificado. Se ele não for encontrado, uma exceção será lançada.
|
Lança
ReferenceError — O alias não foi registrado.
|
Elementos da API relacionados
navigateToURL | () | função |
public function navigateToURL(request:URLRequest, window:String = null):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Abre ou substitui uma janela no aplicativo que contém o contêiner do Flash Player (geralmente um navegador). No Adobe AIR, a função abre uma URL no navegador da web padrão do sistema
Observação importante quanto à segurança
Os desenvolvedores costumam passar valores de URL para a função navigateToURL()
obtidos de fontes externas como, por exemplo, FlashVars. Os invasores podem tentar manipular essas fontes externas para realizar ataques como, por exemplo, de cross-site scripting. Por isso, os desenvolvedores devem validar todas as URLs antes de passá-las para essa função.
Uma boa validação de dados para URLs pode significar coisas diferentes, dependendo do uso da URL no aplicativo geral. As técnicas mais comuns para validação de dados incluem validar o esquema apropriado da URL. Por exemplo, permitir javascript sem intenção: as URLs podem resultar em cross-site scripting. Validar se a URL está no domínio pode garantir que o arquivo SWF não possa ser usado como um redirecionador aberto pelas pessoas que realizam ataques de phishing. Para obter segurança adicional, você também pode optar por validar o caminho da URL e se ela atende às normas da RFC
Por exemplo, o código a seguir mostra um exemplo muito simples de realizar a validação dos dados negando qualquer URL que não comece com http:// ou https:// e validar a URL dentro do nome de domínio. Esse exemplo talvez não seja apropriado a todos os aplicativos da Web, e você deva considerar se verificações adicionais da URL são necessárias.
// AS3 Regular expression pattern match for URLs that start with http:// and https:// plus your domain name. function checkProtocol (flashVarURL:String):Boolean { // Get the domain name for the SWF if it is not known at compile time. // If the domain is known at compile time, then the following two lines can be replaced with a hard coded string. var my_lc:LocalConnection = new LocalConnection(); var domainName:String = my_lc.domain; // Build the RegEx to test the URL. // This RegEx assumes that there is at least one "/" after the // domain. http://www.mysite.com will not match. var pattern:RegExp = new RegExp("^http[s]?\:\\/\\/([^\\/]+)\\/"); var result:Object = pattern.exec(flashVarURL); if (result == null || result[1] != domainName || flashVarURL.length >= 4096) { return (false); } return (true); }
Para conteúdo local em execução em um navegador, chamadas para o método navigateToURL()
que especificam um pseudoprotocolo "javascript:"
(por meio de um objeto URLRequest
passado como o primeiro parâmetro) só são permitidas no arquivo SWF, e a página da Web de conteúdo (caso haja alguma) está na área de segurança confiável local. Alguns navegadores não suportam o uso do protocolo javascript com o método navigateToURL()
. Em vez disso, considere o uso do método call()
do API ExternalInterface
para invocar os métodos JavaScript dentro da delimitação da página HTML.
No Flash Player e em caixas de proteção "não aplicativo" no Adobe AIR, você não consegue se conectar a portas normalmente reservadas. Para ver uma lista completa de portas bloqueadas, consulte "Restrição de APIs de rede" no Guia do Desenvolvedor do ActionScript 3.0.
No Flash Player 10 e posterior em execução no navegador, o uso desse método por programação para abrir uma janela pop-up pode não ser bem-sucedido. Vários navegadores (e configurações de navegador) podem bloquear janelas pop-up a qualquer momento; não é possível garantir que todas as janelas pop-up sejam exibidas. No entanto, para ter boa chance de sucesso, use esse método para abrir uma janela pop-up somente no código que seja executado como um resultado direto da ação do usuário (por exemplo, em um manipulador de eventos para um evento de clique de mouse ou de pressionamento de tecla.)
No Flash Player 10 e posterior, se você usar um Content-Type de partes múltiplas (por exemplo, "multipart/form-data") que contém um upload (indicado por um parâmetro "filename" no cabeçalho "content-disposition" do corpo POST), a operação POST ficará sujeita às regras de segurança aplicadas a uploads:
- A operação POST deverá ser executada em resposta a uma ação iniciada pelo usuário, por exemplo, clique de mouse ou pressionamento de tecla.
- Se a operação POST for entre domínios (se o destino de POST não estiver no mesmo servidor do arquivo SWF que está enviando a solicitação POST), o servidor de destino deverá fornecer um arquivo de diretivas de URL que permita o acesso entre domínios.
Além disso, a sintaxe deverá ser válida (de acordo com os padrões RFC2046) para qualquer Content-Type de partes múltiplas. Se a sintaxe for inválida, a operação POST ficará sujeita às regras de segurança aplicadas a uploads.
No AIR, em plataformas móveis, há suporte para os esquemas de URI sms: e tel:. No Android, os esquema de URI vipaccess:, connectpro:, e market: também são compatíveis. A sintaxe do URL está sujeita às convenções da plataforma. Por exemplo, no Android, o esquema URI precisa estar em minúsculas. Quando você navega para um URL usando um desses esquemas, o tempo de execução abre o URL no aplicativo padrão para lidar com o esquema. Assim, navegar até tel:+5555555555
abre o discador telefônico com o número especificado já inserido. Um aplicativo ou utilitário separado, como um discador telefônico deve estar disponível para processar o URL.
O código a seguir mostra como invocar os aplicativos VIP Access e Connect Pro no Android:
//Invoke the VIP Access Application. navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode")); //Invoke the Connect Pro Application. navigateToURL(new URLRequest("connectpro://"));
Parâmetros
request:URLRequest — Um objeto URLRequest especificando a URL para navegação.
Para conteúdo em execução no Adobe AIR, ao usar a função | |
window:String (default = null ) — A janela do navegador ou quadro HTML no qual exibir o documento indicado pelo parâmetro solicitação . Você pode inserir o nome de uma janela específica ou pode usar um dos valores a seguir:
Se você não especificar um valor para esse parâmetro, uma nova janela vazia será criada. No player autônomo, é possível especificar uma nova janela ( Observação: Quando o código em um arquivo SWF em execução na caixa de proteção local com sistema de arquivos chamar a função |
Lança
IOError — A propriedade digest do objeto request não é null . Somente defina a propriedade digest de um objeto URLRequest a ser usado quando chamar o método URLLoader.load() , ao carregar um arquivo SWZ (componente da plataforma Adobe).
| |
SecurityError — No Flash Player (e em conteúdo de caixa de proteção "não aplicativo" no Adobe AIR), esse erro é lançado nas seguintes situações:
| |
Error — Se o método não for chamado em resposta a uma ação do usuário, por exemplo, um evento de mouse ou de pressionamento de tecla. Esse requisito só se aplica a conteúdo no Flash Player e conteúdo de caixa de proteção "não aplicativo" no Adobe AIR.
|
Mais exemplos
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class NavigateToURLExample extends Sprite { public function NavigateToURLExample() { var url:String = "http://www.adobe.com"; var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; try { navigateToURL(request); } catch (e:Error) { // handle error here } } } }
// Requires // - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol" // buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click); function buttonSymbol_click(evt:MouseEvent):void { var req:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(req, "_blank"); }
var request:URLRequest = new URLRequest( "tel:+5555555555" ); navigateToURL( request );
var request:URLRequest = new URLRequest( "sms:+5555555555" ); navigateToURL( request );
var request:URLRequest = new URLRequest( "market://search?q=pname:com.adobe.flashplayer" ); navigateToURL( request );
registerClassAlias | () | função |
public function registerClassAlias(aliasName:String, classObject:Class):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Preserva a classe (tipo) de um objeto quando esse objeto é codificado em AMF (Action Message Format). Quando você codificar um objeto em AMF, essa função salvará o alias para sua classe, para que seja possível recuperar a classe durante a decodificação desse objeto. Se o contexto de codificação não tiver registrado um alias para a classe de um objeto, o objeto será codificado como anônimo. De forma semelhante, se o contexto de decodificação não tiver o mesmo alias registrado, um objeto anônimo será criado para os dados decodificados.
LocalConnection, ByteArray, SharedObject, NetConnection e NetStream são exemplos de classes que codificam objetos em AMF.
Os contextos de codificação e decodificação não precisam usar a mesma classe para um alias; eles podem mudar de classe propositalmente, desde que a classe de destino contenha todos os membros serializados pela classe de origem.
Parâmetros
aliasName:String — O alias a ser usado.
| |
classObject:Class — A classe associada ao alias especificado.
|
Lança
TypeError — Se qualquer parâmetro for null .
|
Elementos da API relacionados
Exemplo ( Como usar este exemplo )
registerClassAlias()
para registrar um alias (com.example.eg
) para a classe ExampleClass. Como um alias é registrado para a classe, o objeto é capaz de ser deserializado como uma ocorrência de ExampleClass e o código gera true
. Se a chamada registerClassAlias()
fosse removida, o código geraria false
.
package { import flash.display.Sprite; import flash.net.registerClassAlias; import flash.utils.ByteArray; public class RegisterClassAliasExample extends Sprite { public function RegisterClassAliasExample() { registerClassAlias("com.example.eg", ExampleClass); var eg1:ExampleClass = new ExampleClass(); var ba:ByteArray = new ByteArray(); ba.writeObject(eg1); ba.position = 0; var eg2:* = ba.readObject(); trace(eg2 is ExampleClass); // true } } } class ExampleClass {}
sendToURL | () | função |
public function sendToURL(request:URLRequest):void
Versão da linguagem: | ActionScript 3.0 |
Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Envia uma solicitação de URL a um servidor, mas ignora qualquer resposta.
Para examinar a resposta do servidor, use o método URLLoader.load()
.
Não é possível conectar-se às portas normalmente reservadas. Para ver uma lista completa de portas bloqueadas, consulte "Restrição de APIs de rede" no Guia do Desenvolvedor do ActionScript 3.0.
Você pode impedir o arquivo SWF de usar esse método configurando o parâmetro allowNetworking
das marcas object
e embed
na página HTML com o conteúdo SWF.
No Flash Player 10 e posterior, se você usar um Content-Type de partes múltiplas (por exemplo, "multipart/form-data") que contém um upload (indicado por um parâmetro "filename" no cabeçalho "content-disposition" do corpo POST), a operação POST ficará sujeita às regras de segurança aplicadas a uploads:
- A operação POST deverá ser executada em resposta a uma ação iniciada pelo usuário, por exemplo, clique de mouse ou pressionamento de tecla.
- Se a operação POST for entre domínios (se o destino de POST não estiver no mesmo servidor do arquivo SWF que está enviando a solicitação POST), o servidor de destino deverá fornecer um arquivo de diretivas de URL que permita o acesso entre domínios.
Além disso, a sintaxe deverá ser válida (de acordo com os padrões RFC2046) para qualquer Content-Type de partes múltiplas. Se a sintaxe for inválida, a operação POST ficará sujeita às regras de segurança aplicadas a uploads.
Para obter mais informações relacionadas à segurança, consulte o tópico do Centro dos desenvolvedores do Flash Player Security.
Parâmetros
request:URLRequest — Um objeto URLRequest especificando a URL para envio de dados.
|
Lança
SecurityError — Arquivos SWF locais não confiáveis não podem se comunicar com a Internet. Você pode evitar essa situação reclassificando esse arquivo SWF como local com rede ou confiável.
| |
SecurityError — Não é possível conectar-se às portas normalmente reservadas. Para ver uma lista completa de portas bloqueadas, consulte "Restrição de APIs de rede" no Guia do Desenvolvedor do ActionScript 3.0.
|
Exemplo ( Como usar este exemplo )
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.sendToURL; public class SendToURLExample extends Sprite { public function SendToURLExample() { var url:String = "http://www.yourDomain.com/application.jsp"; var variables:URLVariables = new URLVariables(); variables.sessionId = new Date().getTime(); variables.userLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; trace("sendToURL: " + request.url + "?" + request.data); try { sendToURL(request); } catch (e:Error) { // handle error here } } } }
Wed Jun 13 2018, 11:27 AM Z