2012-04-05 12 views
0

Was kann ich aus Flex/AS3 heraus aufrufen, die mir sagen, ob die Flex-App/Webseite innerhalb des lokalen Dateisystems ausgeführt wird oder eher von einem Webserver (entweder localhost oder remote) Server). Hoffentlich ist das klar. Wenn etwas in Javascript akzeptabel ist, wäre eine AS3-Funktion natürlich vorzuziehen.Ermitteln, ob vom Webserver aus aufgerufen

Antwort

0

Die Application-Klasse hat eine Eigenschaft: url

url: String [read-only]

Sprachversion: Actionscript 3.0
Produktversion: Flex 4
Laufzeitversionen: Flash Player 10, AIR 1.5

Die URL, von der diese SWF-Datei der Anwendung geladen wurde.

Implementierung
public function url get(): String

+0

Danke. Benutzte das vorher. Hab's vergessen. – Mark

1

Sie ExternalInterface verwenden könnte die aktuelle URL der App zu erhalten, und bewerten die Zeichenfolge für das Schema:

file: ///
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

Es ist so seltsam - ich war ungefähr, dass gerade jetzt denken - fragen, ob alle Browser auf jeden Fall zurückkehren würde "file:", wenn als Datei serviert. – Mark

+0

Einige reine ActionScript-Tests, die dies von etwas wie flash.system.Capabilities bestätigen könnten, wären nett. Sicherheitspolitik sollte auch eine Rolle spielen. Nicht sicher, wie zuverlässig diese Implementierung für Sie in Ihren Umgebungen funktioniert, scheint aber zunächst machbar. –

+0

Ich werde dies als die Antwort markieren, wenn nichts besseres gepostet wird. Raten Sie, es würde nicht funktionieren, wenn Sie nur in FlashplayerSA selbst testen. Der Grund, warum ich es brauche, ist, dass ein SWFLoader meiner Erfahrung nach nicht funktioniert, wenn er als "Datei:" ausgeführt wird, wenn trustContent auf "True" gesetzt ist. Wenn es irgendwo eine crossdomain.xml im lokalen Dateisystem gibt, die es funktionieren lässt, habe ich es nicht gefunden - in C: \ oder wo auch immer. trustContent muss falsch sein oder SWFLoader wird nicht im lokalen Dateisystem ausgeführt. Jeder weiß, was ich dort vermisse. – Mark

Verwandte Themen