Получить URL текущей страницы из Flex 3? - PullRequest
6 голосов
/ 15 сентября 2009

Как определить URL текущей страницы из Flex?

Ответы [ 7 ]

24 голосов
/ 21 июня 2011

Давайте проясним здесь.

1. Если вам нужен URL-адрес загруженного файла SWF , используйте один из них.

Внутри вашего приложения:

this.url;

Из других мест:

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

Если вы загружаете свой SWF в другой SWF, имейте в виду, что приведенный выше код будет давать другие значения. this.url вернет URL вашего SWF, где Application.application.url даст URL родительского / корневого SWF.

2. Если вы хотите узнать URL-адрес в адресной строке браузера , используйте один из них.

Метод BrowserManager (Убедитесь, что у вас есть History.js, включенный в html-оболочку, чтобы это работало):

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 "#"

Метод JavaScript:

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

Если вы анализируете URL для параметров, не забудьте об этой полезной функции:

// parses a query string like "key=value&another=true" into an object
var params:Object = URLUtil.stringToObject(browserURL, "&");
8 голосов
/ 16 сентября 2009

Из приложения:

var myUrl:String = Application.application.url;
4 голосов
/ 15 сентября 2009

Я искал и придумал этот URL . Честно говоря, я никогда не использовал Flex, но, похоже, важная часть этого документа такова:

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);        
}

В любом случае, удачи! :)

2 голосов
/ 15 сентября 2009

Используя ExternalInterface (flash.external.ExternalInterface), вы можете запустить Javascript в браузере. Зная это, вы можете позвонить

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

чтобы получить текущий URL (обратите внимание, что это будет URL-адрес страницы, а не URL-адрес .swf).

НТН

Koen

0 голосов
/ 05 марта 2012
ExternalInterface.call("window.location.href.toString");
0 голосов
/ 28 марта 2011

Я попробовал версию e: BrowserChangeEvent, и в моем классе это не было или не было подходящего момента для этого события, так что короче говоря, оно не работало!

Использование Application.application.loaderInfo.loaderURL - мое предпочтительное решение.

0 голосов
/ 17 сентября 2009

Из приложения используйте: this.loaderInfo.loaderURL

чтобы разбить его на части и использовать его части:

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