Tengo un problemita que no puedo resolver, ojala me puedan dar un poco de luz al respecto.
Bien, el problema esta en la comunicacion entre 2 sistemas diferentes de la empresa. Los dos sistemas son web, uno es un html comun y el otro es un cgi en donde cada uno estan en servidores diferentes.
Desde el html cargo dentro de un iframe al cgi y necesito que por medio de javascript llamar desde el html superior a funciones que estan dentro del cgi q cargo en el iframe. Pero ahi esta el problema, como estan en diferentes servidores el javascript no puede ejecutar funciones dentro de otro ambito (crossdomain).
Entre las soluciones q encontre por internet y debido a q el cgi lo desarrolla otro equipo en otro pais no encontre nada que pueda resolver desde mi lado.... por lo q intente "inventar" algo q pueda funcionar pero no pude...
La idea es q desde el cgi "registre" listeners de eventos al padre y el padre lance eventos y el cgi ejecuta el handler y lanza la funcion correspondiente.... supuse q de esta manera, por medio de los eventos evitaria el crossdomain, pero cuando debageo con el firebug me salta que no puede acceder a las propiedades...
Este es el codigo que utilzo en el cgi
Código Javascript :
mapElements = { // tipoEvento: [parametos de reportclick] evento1: ["param1_1", "param1_2"], evento2: ["param2_1", "param2_2"], } function onLoad() { var type; for( type in mapElements) { parent.jQuery(parent.document).bind(type, onHandlerEvent); } } function onHandlerEvent(e, msg) { if ( mapElements[e.type] ) { reportclick(arr[0], arr[1]); } }
y desde el padre lanzaria los eventos al document
Código Javascript :
jQuery(document).trigger("evento1");
Funciono en iframes q esten en el mismo server pero no cuando estan en diferentes servidores....
Tb pense en utilizar un flash dentro del cgi y hacer la comunicacion por LocalConnect de flash... o bien poner dentro del cgi otro iframe con una pag q este en el mismo dominio q el padre q he visto en google como posible solucion...
Espero q alguien me pueda iluminar el camino para resolverlo
Graxx y saludos!