CrossMaster postMessage, identifique iFrame
yo suelopostMessage
para enviar eventos desde un iframe a su documento padre. Tengo control sobre ambos lados, pero el contenido proviene de dos dominios diferentes.
Mi simple problema es que no puedo identificar el iFrame dentro de su método de devolución de llamada principal. La implementación se ve así:
En el iFrame:
parent.postMessage(JSON.stringify({action: "closeView" }),'*');
En la ventana principal:
window.addEventListener('message',function(event) {
if(event.origin !== 'https://example.com')
return;
// Parse message back to json
var messageObject = JSON.parse(event.data);
var source = event.source;
/* this is returning: Window -URL- */
console.log( source );
/* This will throw Permission denied, although this code is inside of "parent" */
console.log(source.parentNode);
},false);
Quiero identificar un determinado elemento principal del iframe, que está (lógicamente) dentro del documento principal.
Cuando trato de usarevent.source.parentNode
o algo de jQuery en dicho objeto, Firefox dice, no puedo hacer esto para evitar XSS, error:Error: Permission denied to access property 'parentNode'
¿Cómo puedo obtener el elemento padre del iFrame, que activó elpostMessage
oyente de eventos?