Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ExternalInterface和IE从JavaScript获取Flash中的当前URL_Javascript_Actionscript 3_Internet Explorer_Externalinterface - Fatal编程技术网

使用ExternalInterface和IE从JavaScript获取Flash中的当前URL

使用ExternalInterface和IE从JavaScript获取Flash中的当前URL,javascript,actionscript-3,internet-explorer,externalinterface,Javascript,Actionscript 3,Internet Explorer,Externalinterface,我正在尝试获取Flash player所在的当前URL。不是.swf文件的URL,而是浏览器指向的URL。到目前为止,我使用了: var st:String = ExternalInterface.call("window.location.href"); 不幸的是,这在IE中不起作用。从我的研究中,我可以看出,无论哪种方式,它都不会在IE中起作用 我在互联网上发现的另一件事是在标签上贴上“id”标签 因此,我试图找出是否和/或如何: 用IE和其他工具中的外部接口打电话 浏览器返回给我当前的

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

var st:String = ExternalInterface.call("window.location.href");
不幸的是,这在IE中不起作用。从我的研究中,我可以看出,无论哪种方式,它都不会在IE中起作用

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

因此,我试图找出是否和/或如何:

  • 用IE和其他工具中的外部接口打电话 浏览器返回给我当前的 网址

  • 在标记上添加id=“PA”属性,并让AS3读取该标记 把它当作一根绳子拉进去 使用JavaScript

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

    不管怎样,我都需要知道我在哪个URL上。非常感谢您的任何帮助。

    只是一个建议:

    这可能是因为IE出于某种原因决定了这一点。这是愚蠢的,但这是微软为你


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

    您是否考虑过在没有外部电话的情况下实现您的目标

    ExternalInterface.call('window.location.href.toString');
    
    var domain:String = loaderInfo.loaderURL;
    trace(domain.substr(0, domain.indexOf("/", 8))); //Searches for first instance of "/" after the 8th character.
    
    在上面,我们使用indexOf跟踪基本域,以生成从完整路径到swf的子字符串。我们在第8个字符后搜索“/”的第一个实例,以返回子字符串的端点。我们使用8个字符的原因是允许使用http://和https://;我们不需要看到第一个“/”的。我测试了这个,效果很好


    外部接口调用没有问题,但我倾向于在需要时保存它们。

    要使其在IE中工作,需要做几件事。首先是ActionScript:

    var domain:String = ExternalInterface.call('function () { return window.location.href; }');
    
    其次,在
    标记中需要有效的classid和id属性:

    <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' ...>
    
    
    ..
    

    Christopher,IE如何看待href的观点很好。我确实尝试过你的方法,不幸的是ActionScript只返回“window.location.href.toString”作为字符串:(这是我的第一次尝试。Firefox工作得很好……但仍然没有IET。奇怪的是,我在IE6中测试了它,它工作得很好。不过,我在这台机器上没有IE7或IE8可用,你在使用IE7或IE8吗?是的,不幸的是,IE7/8是我最大的担忧。谢谢!布莱恩,我确实有。不幸的是,有多个大小不同的子域,比如aaaaa-bbbb-ccc或abc.xyz.com…等等,所以计算它们不起作用。值得赞扬的是,我一直在使用RegEx,它一直在发挥作用。非常感谢。你说“计算它们不起作用”是什么意思?不管子域有多嵌套,第一个“/”在http://或https://之后应该是.com或.net等之后的内容。这为我们提供了正确的路径。这会得到实际swf本身的URL,而不是它加载的URL。我必须尝试一下。谢谢!这应该是可以接受的答案。这让我在Wordpress/Flash应用程序集成的非常紧迫的最后期限上省去了麻烦,结果是快把我逼疯了,再次谢谢你。