2011-03-09 14 views
7

¿Alguien puede confirmar que ExternalInterface funciona en el protocolo file:, o punto a algunos documentos que dicen que no lo hará?¿Funciona ExternalInterface en el protocolo file:?

+1

fuera de tema: Yo uso XAMPP a parpadear de depuración "localmente" – zzzzBov

+0

esto no es para la prueba, que está destinado a ser para el código que se ejecutará en un CD – erikvold

+0

bien esto está en mal estado, afaict la los documentos en [navigateToURL] (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/package.html#navigateToURL()) parecen sugerir que ** debería ** usar ExternalInterface para el contenido interno WTF? – erikvold

Respuesta

8

está empezando a parecerse a esto no va a funcionar .. this page dice:

de secuencias de comandos en cualquier dirección entre archivos HTML locales y archivos SWF locales - por ejemplo, mediante el ExternalInterface class-- requiere que tanto el archivo HTML como el archivo SWF estén en la caja de seguridad de confianza local . Esto se debe a que los modelos de seguridad locales para navegadores difieren del modelo de seguridad local de Flash Player .

Y esto es lo que dice sobre el entorno limitado local de confianza:

El entorno limitado local de confianza - SWF local archivos que están registrados como de confianza (por los usuarios o por los programas de instalación) se colocan en la caja de arena local de confianza. Los administradores de sistemas y los usuarios también tienen la capacidad de Reasignar (mover) un archivo SWF local o desde el entorno limitado local de confianza basada en consideraciones de seguridad (ver Controles de usuario administrador y usuario controles). Los archivos SWF que están asignados al recinto limitado de confianza local pueden interactuar con cualquier otro archivo SWF y pueden cargar datos desde cualquier lugar (remoto o local).

Así que, o un instalador o usuario tendría que poner el swf en un afaict-entorno limitado local de confianza ..

+1

nota: ~ hack mencionado [aquí] (http://xs-sniper.com/blog/2011/01/04/bypassing-flash%E2%80%99s-local-with-filesystem- sandbox /) – erikvold

3

De forma predeterminada, ExternalInterface lanzará el Error de seguridad # 2060 si intenta usarlo desde una página file: //. Sin embargo, si se agrega la opción <param name="allowscriptaccess" value="always"/> a su inserción, debe ser capaz de hablar con JavaScript.

El docs on ExternalInterface hace referencia a esto, en la documentación de excepción para addCallback() y call().

EDIT: Después de discutir esto con más detalle en los comentarios a continuación, parece que, aunque esto funciona para mí en Mac, no funciona en Windows. La respuesta de Erik da más detalles sobre por qué esto está fallando.

+0

, entonces usar '' previene el Error de Seguridad? – erikvold

+0

Sí, en mi experiencia. Los documentos hacen referencia a esto, además de usar 'flash.system.Security.allowDomain (sourceDomain)' (actualicé mi respuesta con un enlace, me salteé el método addCallback). –

+0

, por lo que usaste 'flash.system.Security.allowDomain (sourceDomain)' dentro del actionscript para que esto funcione en 'file:'? – erikvold

Cuestiones relacionadas