2012-04-05 56 views
0

我可以从Flex/AS3内部调用什么,它会告诉我flex-app/web页面是在本地文件系统内执行还是从web服务器(localhost或某个远程服务器)。希望这是明确的。如果Javascript中有某些东西是可以接受的,但是一些AS3函数当然更可取。确定是否从网络服务器调用

回答

0

中的应用类有一个属性:URL

URL:字符串[只读]

语言版本:ActionScript 3.0
产品版本:Flex 4个
运行时版本:Flash Player 10,AIR 1.5

来自此应用程序的SWF文件加载的URL。

实施
公共职能得到URL():字符串

+0

谢谢。之前使用过。忘了吧。 – Mark 2012-04-05 05:18:48

1

你可以使用ExternalInterface获取应用程序的当前URL,并评估该字符串的方案:

文件:///
的http://
https://开头

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark" 
       xmlns:mx="library://ns.adobe.com/flex/mx" 
       creationComplete="creationCompleteHandler(event)"> 

    <fx:Script> 
     <![CDATA[ 
      import mx.events.FlexEvent; 

      protected function creationCompleteHandler(event:FlexEvent):void 
      { 
       trace(String(ExternalInterface.call(" function(){ return document.location.href.toString();}"))); 
      } 
     ]]> 
    </fx:Script> 

</s:Application> 
+0

它太奇怪了 - 我想关于现在 - 不知道是否所有的浏览器一定会返回“文件:”如果被服务的文件。 – Mark 2012-04-05 04:58:59

+0

一些可以从flash.system.Capabilities之类验证此功能的纯ActionScript测试会很好。安全政策也应该发挥作用。不确定这种实现在您的环境中对您的工作有多可靠,但最初似乎是可行的。 – 2012-04-05 05:06:01

+0

如果没有更好的发布,我会将其标记为答案。如果只是在FlashplayerSA本身进行测试,猜测它不起作用。我需要它的原因是因为根据我的经验,如果trustContent设置为“True”,如果以“file:”运行SWFLoader将无法正常工作。如果有什么地方可以在本地文件系统中放置一个crossdomain.xml文件,它可以工作,但我还没有找到它 - 在C:\或任何地方。 trustContent必须是false或SWFLoader不会在本地文件系统中运行。任何人都知道我在那里失踪。 – Mark 2012-04-05 05:11:37