从 Flex 3 获取当前页面的 URL?

发布于 2024-08-04 22:56:03 字数 29 浏览 3 评论 0原文

如何从 Flex 中确定当前页面的 URL?

How do I determine the URL of the current page from within Flex?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

划一舟意中人 2024-08-11 22:56:03

让我们在这里说清楚。

1. 如果您需要加载的 SWF 文件的 URL,请使用其中之一。

在您的应用程序内部:

this.url;

从其他任何地方:

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

如果您将您的 SWF 加载到另一个 SWF 中,请记住上面的代码将给出不同的值。 this.url 将返回 SWF 的 url,而 Application.application.url 将给出父/根 SWF 的 url。

2.如果您想知道浏览器地址栏中的URL,请使用其中之一。

BrowserManager 方法(确保您的包装器 html 中包含 History.js 才能正常工作):

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, "&");

Let's be clear here.

1. If you want the URL of the loaded SWF file, then use one of these.

Inside your application:

this.url;

From anywhere else:

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

If you are loading your SWF inside another SWF, then keep in mind that the code above will give different values. this.url will return the url of your SWF, where as Application.application.url will give the url of the parent/root SWF.

2. If you want to know the URL that is in the browser address bar, then use one of these.

BrowserManager method(Make sure you have the History.js included in your wrapper html for this to work):

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 method:

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

If you are parsing the url for parameters, don't forget about this useful function:

// parses a query string like "key=value&another=true" into an object
var params:Object = URLUtil.stringToObject(browserURL, "&");
笛声青案梦长安 2024-08-11 22:56:03

从应用程序:

var myUrl:String = Application.application.url;

From the Application:

var myUrl:String = Application.application.url;
垂暮老矣 2024-08-11 22:56:03

我搜索并想出了 这个网址。老实说,我从未使用过 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);        
}

无论哪种方式,祝你好运! :)

I searched and came up with this url. I've honestly never used Flex, but it looks like the important part of that document is this:

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

Either way, good luck! :)

凡尘雨 2024-08-11 22:56:03

使用ExternalInterface (flash.external.ExternalInterface),您可以在浏览器中执行Javascript。
知道这一点后,您可以调用

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

来获取当前 URL(请注意,这将是页面 url,而不是 .swf url)。

科恩

Using ExternalInterface (flash.external.ExternalInterface), you can execute Javascript in the browser.
Knowing this, you can call

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

to get the current URL (note that this will be the page url and not the .swf url).

hth

Koen

自由范儿 2024-08-11 22:56:03

从应用程序中,使用: this.loaderInfo.loaderURL

将其分解并使用其中的一部分执行以下操作:

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

From the Application, use: this.loaderInfo.loaderURL

to break it apart and use parts of it do:

var splitURL:Array = this.loaderInfo.loaderURL.split('/');
var baseURL:String = "http://"+splitURL[2];
亚希 2024-08-11 22:56:03

我尝试了 e:BrowserChangeEvent 版本,但在我的班级中它没有或不是该事件起作用的适当时机,所以简而言之它不起作用!

使用 Application.application.loaderInfo.loaderURL 是我的首选解决方案。

I tried the e:BrowserChangeEvent version and inside my class it didnt or wasnt the appropriate moment for this event to work so in short it didn't work !

Using Application.application.loaderInfo.loaderURL is my preferred solution.

枫林﹌晚霞¤ 2024-08-11 22:56:03
ExternalInterface.call("window.location.href.toString");
ExternalInterface.call("window.location.href.toString");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文