2010-01-24 16 views

risposta

1

Vorrei provare a passare le informazioni richieste come flashvar. Non è la soluzione migliore che conosco, ma funzionerà.

Flash: FlashVars in AS3

+0

L'unico problema con questa tecnica è che Flash interromperà alcuni URL in singole variabili. Questo succede con GET URL, ovvero: * .com? One = 1 & two = 2. Quindi tienilo a mente! –

+0

@TylerEgeto puoi risolvere il problema codificando l'URL con caratteri speciali HTML – Tchakabam

0

credo che la sua posible per usare l'interfaccia esterna di farlo con javascript window.location

15

dare un'andare:

import flash.external.ExternalInterface; 

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

dovrebbe fare il trucco.

+0

cosa divertente, puoi scrivere javascript all'interno di actionscript senza bisogno di html. – atilkan

+0

Cosa fa il toString? È una funzione aggiunta da Flash? – Eddie

2

Ci sono un paio di modi per risolvere questo problema, ma tutti implicano l'uso di JavaScript per interrogare direttamente il browser.

Il mio modo preferito per risolvere questo problema sarebbe quello di fornire l'URL tramite una proprietà flashVar, direttamente dal codice di incorporazione (personalmente, vorrei raccomandare usando SWFObject per semplificare questo); non dimenticare che dovrai codificare l'URL per evitare problemi di markup.

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

Ora si sarà in grado di accedere all'URL del browser tramite l'oggetto loaderInfo:

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

Si noti che questo funziona solo se si ha il controllo di HTML generato per il file SWF - se gli utenti sono andando a prendere il SWF e scrivendo il proprio HTML incorporato, non funzionerà.

Se non si ha il controllo del codice HTML di embed flash, è necessario ottenere il flash per interrogare il browser in fase di esecuzione utilizzando la classe ExternalInterface; altre persone hanno suggerito l'uso di "window.location.href.toString", tuttavia questo può risultare problematico in IE6, trovo le seguenti opere in modo affidabile in tutti i browser

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

Nota che, per far funzionare tutto questo, voi sarà necessario concedere l'accesso JavaScript al filmato Flash, questo è fatto, ancora una volta, tramite il codice embed HTML e il allowScriptAccess param

2
var url:String = loaderInfo.loaderURL; 

sembra funzionare troppo.

0

Ho utilizzato il flash da molto tempo e non l'ho mai notato. Fornisce il dominio solo per sicurezza. Funziona anche tramite swfs caricati. Non sono sicuro degli iframe.

Security.pageDomain