2010-01-24 27 views

Respuesta

1

Intentaría pasar la información requerida en forma de flashvar. No es la mejor solución lista para usar que conozco, pero funcionará.

Flash: FlashVars in AS3

+0

El único problema con esta técnica es que Flash dividirá algunas URL en variables individuales. Esto sucede con las URL GET, es decir: * .com? One = 1 & two = 2. ¡Así que tenlo en mente! –

+0

@TylerEgeto puede corregir eso codificando la URL con caracteres especiales de HTML – Tchakabam

0

Creo que es Posible utilizar la interfaz externa de un hacerlo con javascript window.location

15

pruébalo:

import flash.external.ExternalInterface; 

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

debe hacer el truco.

+0

Lo curioso, puede escribir javascript dentro de actionscript sin la necesidad de html. – atilkan

+0

¿Qué hace el toString? ¿Es eso una función agregada por Flash? – Eddie

2

Hay un par de maneras de resolver este problema, sin embargo, todas ellas implican el uso de JavaScript para consultar el navegador directamente.

Mi forma preferida de resolver este problema sería proporcionar la URL a través de una propiedad flashVar, directamente desde el código de inserción (personalmente, recomendaría usar SWFObject para hacerlo más fácil); no olvide que necesitará URL URL Codifíquelo para evitar problemas de marcado.

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

Ahora usted será capaz de acceder a la URL del navegador a través del objeto loaderInfo:

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

cuenta que esto sólo funcionará si usted tiene el control de código HTML generado para el archivo SWF - si los usuarios están va a agarrar el SWF y escribir su propio HTML embebido, no va a funcionar.

Si no tiene control de la incrustación flash HTML, necesitará obtener flash para consultar el navegador en tiempo de ejecución utilizando la clase ExternalInterface; otras personas han sugerido el uso de "window.location.href.toString" sin embargo esto puede ser problemático en IE6, encuentro las siguientes obras de forma fiable en todos los navegadores

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

Tenga en cuenta que para que esto funcione, tendrá que permitir el acceso JavaScript para su película flash, esto se hace, de nuevo, a través del código embed HTML y el allowScriptAccess param

2
var url:String = loaderInfo.loaderURL; 

parece funcionar también.

0

He estado usando el flash durante mucho tiempo y nunca he notado este. Solo da el dominio por seguridad. Funciona a través de swfs cargados también. No estoy seguro acerca de los iframes.

Security.pageDomain