Paketet flash.net innehåller funktioner på paketnivå för att öppna ett nytt webbläsarfönster, skicka en URL-förfrågan till en server och klassalias.
Funktion | Definieras med | ||
---|---|---|---|
Letar upp en klass som tidigare hade ett alias registrerat via ett anrop till metoden registerClassAlias(). | flash.net | ||
Öppnar eller ersätter ett fönster i programmet som innehåller Flash Player-behållaren (vanligtvis en webbläsare). | flash.net | ||
Bevarar klassen (typen) för ett objekt när objektet är kodat i AMF-format (Action Message Format). | flash.net | ||
Skickar en URL-begäran till en server, men ignorerar eventuella svar. | flash.net |
getClassByAlias | () | funktion |
public function getClassByAlias(aliasName:String):Class
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Letar upp en klass som tidigare hade ett alias registrerat via ett anrop till metoden registerClassAlias()
.
Den här metoden samverkar inte med metoden flash.utils.getDefinitionByName()
.
Parametrar
aliasName:String — Det alias som ska hittas.
|
Class — Klassen som är kopplad med givet alias. Om den inte hittas genereras ett undantag.
|
Utlöser
ReferenceError — Aliaset registrerades inte.
|
Relaterade API-element
navigateToURL | () | funktion |
public function navigateToURL(request:URLRequest, window:String = null):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Öppnar eller ersätter ett fönster i programmet som innehåller Flash Player-behållaren (vanligtvis en webbläsare). I Adobe AIR öppnar funktionen en URL i systemets standardwebbläsare
Viktigt om säkerhet!
Utvecklare skickar ofta URL-värden till navigateToURL()
-funktionen som har hämtats från externa källor, till exempel FlashVars. Angripare kan försöka att manipulera dessa externa källor för att utföra attacker, till exempel korsskriptning mellan webbplatser. Därför bör utvecklare validera alla URL:er innan de skickar dem till den här funktionen.
Vilken datavalidering av URL:er som är lämplig varierar beroende på hur URL:en används i programmet. Den vanligaste datavalideringstekniken är att validera att URL:en har rätt schema. Till exempel att av misstag tillåta javascript: URL:er kan leda till korsskriptning mellan webbplatser. Genom att validera att URL:en finns i din domän säkerställer du att SWF-filen inte kan användas som en öppningsomdirigerare vid nätfiskeattacker. För att öka säkerheten kan du också välja att validera sökvägen till URL:en och validera att URL:en följer RFC-riktlinjerna
Till exempel följande kod visar ett enkelt exempel på hur du utför datavalidering genom att avvisa alla URL:er som inte inleds med http:// eller https:// och validerar att URL:en finns inom ditt domännamn. Det här exemplet kanske inte passar för alla webbprogram och du bör överväga att utföra fler kontroller av URL:en om det behövs.
// 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); }
För lokalt innehåll som körs i en webbläsare är anrop till metoden navigateToURL()
som anger pseudo-protokollet "javascript:"
(via ett URLRequest
-objekt som skickas som den första parametern) bara tillåtna om SWF-filen och innefattande webbsida (om någon) finns i säkerhetssandlådan lokal-tillförlitlig. En del webbläsare har inte stöd för att använda javascript-protokollet med metoden navigateToURL()
. Överväg i stället att använda metoden call()
för API:t ExternalInterface
när du anropar JavaScript-metoder inom den överordnade HTML-sidan.
I Flash Player, och i icke-programsandlådor i Adobe AIR, kan du inte ansluta till vanligtvis reserverade portar. Du hittar en fullständig lista över spärrade portar i avsnittet ”Begränsa nätverks-API:er” i Utvecklarhandbok för Adobe ActionScript 3.0.
Det kan hända att det misslyckas om du använder den här metoden programmatiskt för att öppna ett popup-fönster i Flash Player 10 eller senare som körs i en webbläsare. Olika webbläsare (och webbläsarinställningar) kan när som helst blockera popup-fönster. Det går inte att garantera att ett popup-fönster visas. Den bästa möjligheten att lyckas får du om du endast använder den här metoden för att öppna popup-fönster i kod som körs som ett direkt resultat av en användaråtgärd (till exempel i en händelsehanterare för en musklicknings- eller tangenttryckningshändelse).
Om du i Flash Player 10 eller senare använder en multipart-innehållstyp (till exempel ”multipart/form-data”) som innehåller en överföring (vilket indikeras av en ”filename”-parameter i ett ”content-disposition”-huvud inuti POST), gäller de säkerhetsregler som används för överföringar också för POST-åtgärden.
- POST-åtgärden måste utföras som ett svar på en användarinitierad åtgärd som exempelvis en musklickning eller en tangenttryckning.
- Om POST-åtgärden är för korsdomän (POST-målet ligger inte på samma server som SWF-filen som skickar POST-begäran), måste målservern ha en URL-policyfil som tillåter korsdomänåtkomst.
För en multipart-innehållstyp måste också syntaxen vara giltig (enligt RFC2046-standarderna). Om syntaxen verkar vara ogiltig, gäller samma regler för POST-åtgärden som för överföringar.
I AIR på mobilplattformar stöds URI-schemana sms: och tel:. På Android stöds URI-scheman såsom vipaccess:, connectpro: och market:. URL-syntaxen beror på plattformskonventioner. På Android måste URI-scheman till exempel skrivas med gemener. När du går till en URL med något av dessa scheman öppnas URL:en i standardprogrammet för schemahantering. Om du till exempel går till tel:+5555555555
öppnas telefonuppringningsprogrammet med det angivna numret inmatat. Ett separat program eller verktyg, som ett telefonuppringningsprogram, måste vara tillgängligt för att bearbeta URL:en.
I följande kod visas hur du kan anropa programmen VIP Access och Connect Pro i 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://"));
Parametrar
request:URLRequest — Ett URLRequest-objekt som anger URL-adressen som navigeringen görs till.
För innehåll som körs i Adobe AIR, och när du använder | |
window:String (default = null ) — Webbläsarfönstret eller HTML-bildrutan där dokumentet som anges med parametern request ska visas. Du kan ange namnet på ett specifikt fönster eller använda något av följande värden:
Om du inte anger ett värde för parametern skapas ett nytt, tomt fönster. I den fristående spelaren kan du antingen ange ett nytt ( Obs! När kod i en SWF-fil som körs i sandlådan lokal-med-filsystem anropar funktionen |
Utlöser
IOError — Egenskapen digest för objektet request är inte null . Du bör endast ange egenskapen digest för ett URLRequest-objekt till att användas när du anropar metoden URLLoader.load() när du läser in en SWZ-fil (en Adobe-plattformskomponent).
| |
SecurityError — I Flash Player (och i innehåll som inte finns i programsandlådan i Adobe AIR) inträffar det här felet i följande situationer:
| |
Error — Om metoden inte anropas som svar på en användaråtgärd, som exempelvis en mushändelse eller tangenttryckningshändelse. Det här kravet gäller bara för innehåll i Flash Player och innehåll som inte finns i programsandlådan i Adobe AIR.
|
Fler exempel
Relaterade API-element
Exempel ( Så här använder du exemplet )
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 | () | funktion |
public function registerClassAlias(aliasName:String, classObject:Class):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bevarar klassen (typen) för ett objekt när objektet är kodat i AMF-format (Action Message Format). När du kodar ett objekt till AMF sparar den här funktionen aliaset för sin klass. På så vis kan du återskapa klassen när objektet avkodas. Om kodningsinnehållet inte registrerade något alias för en objektklass kodas objektet som anonymt. Samma sak gäller om avkodningsinnehållet inte har samma alias registrerat, då skapas ett anonymt objekt för avkodade data.
LocalConnection, ByteArray, SharedObject, NetConnection och NetStream är exempel på klasser som kodar objekt i AMF.
Innehåll som ska kodas och avkodas behöver inte använda samma klass för ett alias. De kan avsiktligt byta klasser, förutsatt att destinationsklassen innehåller alla medlemmar som källklassen serialiserar.
Parametrar
aliasName:String — Det alias som ska användas.
| |
classObject:Class — Klassen som är kopplad med givet alias.
|
Utlöser
TypeError — Om någon av parametrarna är null .
|
Relaterade API-element
Exempel ( Så här använder du exemplet )
registerClassAlias()
för att registrera alias (com.example.eg
) för klassen ExampleClass. Eftersom ett alias är registrerat för klassen kan objektet avserialiseras som en ExampleClass-instans. Kodens utdata är true
. Om anropet registerClassAlias()
togs bort skulle kodens utdata bli 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 | () | funktion |
public function sendToURL(request:URLRequest):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Skickar en URL-begäran till en server, men ignorerar eventuella svar.
Använd istället metoden URLLoader.load()
när du ska analysera serversvaret.
Du kan inte ansluta till vanligtvis reserverade portar. Du hittar en fullständig lista över spärrade portar i avsnittet ”Begränsa nätverks-API:er” i Utvecklarhandbok för Adobe ActionScript 3.0.
Du kan förhindra att metoden används av en SWF-fil genom att ställa in parametern allowNetworking
i object
- och embed
-taggarna på den HTML-sida där SWF-innehållet finns.
Om du i Flash Player 10 eller senare använder en multipart-innehållstyp (till exempel ”multipart/form-data”) som innehåller en överföring (vilket indikeras av en ”filename”-parameter i ett ”content-disposition”-huvud inuti POST), gäller de säkerhetsregler som används för överföringar också för POST-åtgärden.
- POST-åtgärden måste utföras som ett svar på en användarinitierad åtgärd som exempelvis en musklickning eller en tangenttryckning.
- Om POST-åtgärden är för korsdomän (POST-målet ligger inte på samma server som SWF-filen som skickar POST-begäran), måste målservern ha en URL-policyfil som tillåter korsdomänåtkomst.
För en multipart-innehållstyp måste också syntaxen vara giltig (enligt RFC2046-standarderna). Om syntaxen verkar vara ogiltig, gäller samma regler för POST-åtgärden som för överföringar.
Mer information om säkerhet finns i avsnittet Security på Flash Player Developer Center.
Parametrar
request:URLRequest — Ett URLRequest-objekt som anger vilken URL som data ska skickas till.
|
Utlöser
SecurityError — Lokala otillförlitliga SWF-filer kan inte kommunicera med webben. Du kan undvika problemet genom att omklassificera SWF-filen som lokal med nätverkstjänst eller tillförlitlig.
| |
SecurityError — Du kan inte ansluta till vanligtvis reserverade portar. Du hittar en fullständig lista över spärrade portar i avsnittet ”Begränsa nätverks-API:er” i Utvecklarhandbok för Adobe ActionScript 3.0.
|
Exempel ( Så här använder du exemplet )
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 } } } }
Tue Jun 12 2018, 01:57 PM Z