2012-04-05 34 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