dinamico - jquery iframe content html
ActivaciĆ³n de un evento jQuery desde iframe (3)
Aquí está el escenario, tengo eventos sucediendo desde dentro de un iframe y hasta ahora todo está funcionando bien. Me encontré con el problema en el que quiero enviar un evento del iframe al padre.
Estoy usando esto para activar el evento desde el iframe:
$(''body'', window.parent.document).trigger(''eventName'');
//and I''ve also tried
$(window.parent.document).find(''body'').trigger(''eventName'');
Y luego, en la página principal, he escuchado el evento de esta manera:
$(''body'').bind(''eventName'', myFunction)
Sé que la secuencia de comandos llega al activador porque puse un console.log
antes y después del desencadenador. El iframe está en el mismo dominio, por lo que no hay problema allí.
Puedo llamar a una función en la página principal directamente así: window.parent.functionName
pero me preguntaba si esto es posible con el uso de una solución basada en eventos.
Resuelto
La respuesta de @cwolves funciona muy bien:
parent.$(''body'').trigger( ''eventName'' );
Entonces este será el código que vive en su iFrame:
$(''#myElem'').click(function() {
window.parent.success_msg();
});
Y este código debe estar en la ventana principal:
window.success_msg = function() {
// Your code goes here
};
También debe ejecutar esto en un servidor, ya sea localhost o alojado.
Pruebe esto en el código iframe js
var parentWin = $( window.parent.document.body );
jQuery.event.trigger(''eventName'', parentWin.data(), parentWin );
Si tiene jQuery cargado en el cuadro principal, intente:
parent.$(''body'').trigger( ''eventName'' );
Si no, intente esto, no estoy seguro de si funcionará, pero solo miré la fuente jQuery y creo que puede:
var pBody = $( parent.document.body );
pBody.trigger( ''eventName'', pBody.data() );
(Y haga lo mismo al vincular eventName
) El problema, hasta donde puedo decir, es que jQuery está usando los datos de la página local, lo que está causando problemas porque parece que está tratando de cargar datos desde el otro marco. En otras palabras, es un desastre, pero hay parámetros de data
aceptados en .bind
, .trigger
, etc.