2

我正在尝试获取 Flash 播放器所在的当前 URL。不是 .swf 文件的 URL,而是浏览器指向的 URL。到目前为止,我使用过:

var st:String = ExternalInterface.call("window.location.href");

不幸的是,这在 IE 中不起作用。根据我的研究,我可以看到它不适用于 IE。

我在互联网上发现的唯一另一件事是在标签上贴上“id”标签。

所以我试图找出是否和/或如何:

  1. 不知何故,使用 IE 和其他浏览器中的 ExternalInterface 进行调用,以将当前 URL 返回给我。

    或者

  2. 在标签上添加一个 id="PA" 属性并让 AS3 读取该标签并将其作为字符串拉入,而不使用 JavaScript

我的限制是我只能将标签添加到 HTML 中,而不能添加任何 JavaScript 函数。这必须在 AS3 中严格执行。

无论哪种方式,我都需要知道我在哪个 URL 上。任何帮助是极大的赞赏。

4

4 回答 4

5

您需要做一些事情才能使其在 IE 中运行。首先是动作脚本:

var domain:String = ExternalInterface.call('function () { return window.location.href; }');

其次,您需要在标签中包含有效的classid 和 id属性:<object>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="myplayer_123123" ...>

如果您不放置这些属性,ExternalInterface.call 在 IE6/7/8 中始终返回 null,但在 Firefox 中按预期工作。

第三,您需要将参数allowScriptAccess 设置为“always”,以启用ExternalInterface。

<param name='allowScriptAccess' value='always'/>
..
<embed allowscriptaccess='always' ...>

......

于 2009-10-14T20:17:33.173 回答
0

只是一个建议:

这可能是因为 IE 出于某种原因决定window.location.href 可以用作 function。它很笨拙,但那是适合您的 Microsoft。

你试过 ExternalInterface.call("String", "window.location.href") 吗?那将是我的下一个猜测。

于 2009-09-25T15:47:04.010 回答
0
ExternalInterface.call('window.location.href.toString');
于 2009-09-25T17:31:20.150 回答
-1

Have you given any thought to achieving what you want without an External Call.

var domain:String = loaderInfo.loaderURL;
trace(domain.substr(0, domain.indexOf("/", 8))); //Searches for first instance of "/" after the 8th character.

Above, we trace out the base domain using indexOf to make a sub-string from the full path to the swf. We search for the first instance of "/" after the 8th character to return the end point of the substring. The reason we go in 8 characters is to allow for http:// and https://; we need it not to see those first "/"'s. I tested this and it worked great.

There is nothing wrong with ExternalInterface calls, but I tend to save them for when required.

于 2009-09-26T12:44:50.067 回答