获得Flash中当前的URL在JavaScript中使用ExternalInterface的和IE(

2019-07-19 15:45发布

我试图让当前的URL在Flash播放器上。 .swf文件的不是网址,但该浏览器所指向的URL。 到目前为止我用:

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

不幸的是,这并不在IE浏览器。 从我的研究,我可以看到,它不会与IE浏览器两种方式。

我发现在互联网的唯一的另一件事是把标签上的“身份证”的标签。

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

  1. 不知怎的,让使用ExternalInterface在IE和其他浏览器返回到我当前的URL调用。

    要么

  2. 拍一个id =“PA”的标签属性,并有AS3阅读标签,并把它作为一个字符串,而无需使用JavaScript

我的限制是,我可以在标签只会增加HTML,不能添加任何JavaScript函数。 这必须在AS3严格完成。

无论哪种方式,我需要知道我是什么网址上。 任何帮助是极大的赞赏。

Answer 1:

您需要以使其工作在IE几件事情。 首先,动作脚本:

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

其次,你需要在有效的classid和id atributes <object>标签:

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

如果你不把这些属性,ExternalInterface.call总是返回IE6 / 7/8空,但预期在Firefox的作​​品。

第三,你需要帕拉姆的allowScriptAccess设置为“始终”,为了能够使用的ExternalInterface的。

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

.....



Answer 2:

只是一个建议:

这可能是因为IE浏览器,出于某种原因,决定window.location.href可作为一个功能 。 这是愚蠢的,但毕竟是微软为您服务。

您是否尝试过ExternalInterface.call( “字符串”, “window.location.href”)? 这将是我的下一个猜测。



Answer 3:

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


Answer 4:

你有没有想过实现你想要的东西没有外部呼叫。

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

上面,我们使用的indexOf使从完整路径SWF中的子串描绘出基本域。 我们搜索“/”第八字符后返回字符串的结束点的第一个实例。 我们在8个字符去的原因是为了允许HTTP://和https://; 我们需要它不是第一次看到那些“/”的。 我测试了这一点,它工作很大。

没有什么错ExternalInterface的电话,但我倾向于拯救他们需要时。



文章来源: Getting current URL in Flash from JavaScript using ExternalInterface and IE