2010-01-24 33 views

Antwort

1

Ich würde versuchen, die erforderlichen Informationen als flashvar übergeben. Nicht die beste Lösung, die ich kenne, aber es wird funktionieren.

Flash: FlashVars in AS3

+0

Das einzige Problem bei dieser Technik ist, dass Flash einige URLs in einzelne Variablen zerlegt. Dies geschieht mit GET-URLs, dh: * .com? One = 1 & two = 2. Behalte das im Hinterkopf! –

+0

@TylerEgeto können Sie das durch die Codierung der URL mit HTML-Sonderzeichen – Tchakabam

0

ich denke, seine posible die externe Schnittstelle ein tun es mit Javascript window.location

15

Geben dieses gehen zu verwenden:

import flash.external.ExternalInterface; 

var url:String = ExternalInterface.call("window.location.href.toString"); 
if (url) textfield.text = url; 

den Trick tun sollten.

+0

lustige Sache beheben, können Sie Javascript in ActionScript ohne die Notwendigkeit von HTML schreiben. – atilkan

+0

Was macht der toString? Wird diese Funktion von Flash hinzugefügt? – Eddie

2

Es gibt eine Reihe von Möglichkeiten, dieses Problem zu lösen, aber alle von ihnen beinhalten die Verwendung von JavaScript, um den Browser direkt abzufragen.

Mein bevorzugter Weg, um dieses Problem zu lösen, wäre die URL über eine FlashVar-Eigenschaft, direkt aus dem Einbettungscode (persönlich, würde ich empfehlen SWFObject, um dies zu erleichtern); Vergessen Sie nicht, dass Sie die URL verschlüsseln müssen, um Markup-Probleme zu vermeiden.

var flashvars = { 
    browserURL: escape(location.href) 
}; 
swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf", flashvars); 

Jetzt werden Sie in der Lage sein, den Browser-URL über das loader Objekt zuzugreifen:

trace(stage.loaderInfo.parameters["browserURL"]); 

beachten Sie, dass dies nur funktioniert, wenn Sie die Kontrolle der erzeugten HTML-Code für die SWF-Datei haben - wenn die Nutzer sind Ich werde die SWF greifen und ihr eigenes HTML einbetten, es wird nicht funktionieren.

Wenn Sie keine Kontrolle über den Flash-HTML-Einbettungsmodus haben, müssen Sie Flash abrufen, um den Browser zur Laufzeit mithilfe der ExternalInterface-Klasse abzufragen. aber andere Leute haben die Verwendung von „window.location.href.toString“, schlug dies kann in IE6 als problematisch erweisen, finde ich folgende Arbeiten zuverlässig in allen Browsern

const browserURL : String = ExternalInterface.call("eval", "window.location.href"); 

Beachten Sie, dass, um für diese zu arbeiten, Sie müssen Sie JavaScript, um Flash-Film zu gewähren, wird diese wieder getan, über den HTML-Code einbetten und die allowScriptAccess param

2
var url:String = loaderInfo.loaderURL; 

scheint zu funktionieren.

0

Ich benutze Flash seit langer Zeit und habe diesen nie bemerkt. Es gibt nur die Domäne für Sicherheit. Es funktioniert auch durch geladene swfs. Nicht sicher über Iframes.

Security.pageDomain