Domanda

Come posso determinare l'URL della pagina corrente da Flex?

È stato utile?

Soluzione

Usando ExternalInterface ( flash.external.ExternalInterface ), puoi eseguire Javascript nel browser. Sapendo questo, puoi chiamare

ExternalInterface.call (" window.location.href.toString ");

per ottenere l'URL corrente (nota che questo sarà l'URL della pagina e non l'URL .swf).

hth

Koen

Altri suggerimenti

Cerchiamo di essere chiari qui.

1. Se si desidera l'URL del file SWF caricato, utilizzare uno di questi.

All'interno dell'applicazione:

this.url;

Da qualsiasi altra parte:

Application.application.url; // Flex 3
FlexGlobals.topLevelApplication.url; // Flex 4

Se stai caricando il tuo file SWF in un altro file SWF, tieni presente che il codice in alto fornirà valori diversi. this.url restituirà l'URL del file SWF, dove come Application.application.url fornirà l'URL del file SWF principale / root.

2. Se vuoi conoscere l'URL che si trova nella barra degli indirizzi del browser , usa uno di questi.

Metodo BrowserManager (assicurati di avere History.js incluso nel tuo wrapper html affinché funzioni):

var browser:IBrowserManager = BrowserManager.getInstance(); 
browser.init();
var browserUrl:String = browser.url; // full url in the browser
var baseUrl:String = browser.base; // the portion of the url before the "#"
var fragment:String = browser.fragment; // the portion of the url after the "#"

Metodo JavaScript:

var browserUrl:String = ExternalInterface.call("eval", "window.location.href");

Se stai analizzando l'URL per i parametri, non dimenticare questa utile funzione:

// parses a query string like "key=value&another=true" into an object
var params:Object = URLUtil.stringToObject(browserURL, "&");

Dall'applicazione:

var myUrl:String = Application.application.url;

Ho cercato e trovato questo url . Onestamente non ho mai usato Flex, ma sembra che la parte importante di quel documento sia questa:

private function showURLDetails(e:BrowserChangeEvent):void {
  var url:String = browserManager.url;
  baseURL = browserManager.base;
  fragment = browserManager.fragment;                
  previousURL = e.lastURL;                

  fullURL = mx.utils.URLUtil.getFullURL(url, url);
  port = mx.utils.URLUtil.getPort(url);
  protocol = mx.utils.URLUtil.getProtocol(url);
  serverName = mx.utils.URLUtil.getServerName(url);
  isSecure = mx.utils.URLUtil.isHttpsURL(url);        
}

Ad ogni modo, buona fortuna! :)

Dall'applicazione, utilizzare: this.loaderInfo.loaderURL

per dividerlo e usarne alcune parti:

var splitURL:Array = this.loaderInfo.loaderURL.split('/');
var baseURL:String = "http://"+splitURL[2];

Ho provato la versione e: BrowserChangeEvent e all'interno della mia classe non ha funzionato o non è stato il momento opportuno per far funzionare questo evento, quindi in breve non ha funzionato!

L'uso di Application.application.loaderInfo.loaderURL è la mia soluzione preferita.

ExternalInterface.call("window.location.href.toString");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top