获取当前浏览器URL - ActionScript 3

时间:2010-01-24 17:20:20

标签: actionscript-3 flash

我正在尝试获取当前的浏览器网址。我已经尝试过外部呼叫,但它没有用。并使用loaderInfo.url我收到当前的SWF网址。

6 个答案:

答案 0 :(得分:15)

放手一搏:

import flash.external.ExternalInterface;

var url:String = ExternalInterface.call("window.location.href.toString");
if (url) textfield.text = url;

应该这样做。

答案 1 :(得分:2)

有几种方法可以解决这个问题,但是所有这些方法都涉及使用JavaScript直接查询浏览器。

我解决这个问题的首选方法是通过flashVar属性提供URL,直接来自嵌入代码(个人而言,我建议使用SWFObject使这更容易);不要忘记你需要对URL进行编码以避免出现标记问题。

var flashvars = {
  browserURL: escape(location.href)
};
swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf", flashvars);

现在,您将能够通过loaderInfo对象访问浏览器URL:

trace(stage.loaderInfo.parameters["browserURL"]);

请注意,这只有在您控制SWF文件的生成HTML时才有效 - 如果用户要抓住SWF并编写自己的嵌入HTML,那么它就不会起作用。

如果你无法控制flash嵌入式HTML,那么你需要让flash在运行时使用ExternalInterface类来查询浏览器。其他人建议使用“window.location.href.toString”但是这在IE6中可能会出现问题,我发现以下所有浏览器都能可靠地工作

const browserURL : String = ExternalInterface.call("eval", "window.location.href");

请注意,为了实现此功能,您需要授予对Flash电影的JavaScript访问权限,再次通过HTML嵌入代码和allowScriptAccess param

完成此操作

答案 2 :(得分:2)

var url:String = loaderInfo.loaderURL;

似乎也有效。

答案 3 :(得分:1)

我会尝试将所需信息作为flashvar传递。不是我所知道的最好的开箱即用解决方案,但它会起作用。

Flash: FlashVars in AS3

答案 4 :(得分:0)

我认为使用外部界面可以使用javascript window.location

来实现

答案 5 :(得分:0)

我一直在使用闪光灯,从来没有注意过这个。它仅为安全性提供域名。它也可以通过加载的swfs工作。不确定iframe。

Security.pageDomain