Ricevi l'URL della pagina corrente da Flex 3?
-
07-07-2019 - |
Domanda
Come posso determinare l'URL della pagina corrente da Flex?
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");