2010-09-26 8 views
18

Tengo un script de greasemonkey que abre un marco flotante que contiene un formulario de un subdominio diferente como página principal.

me gustaría actualizar la página principal cuando el iframe refresca después del envío del formulario

estoy en el punto en que puedo ejecutar una función cuando se actualice el iframe, pero no puedo conseguir que la función de afectar a los padres documento.

Entiendo que esto se debe a los modelos de seguridad del navegador, y he estado leyendo sobre el uso de postMessage para comunicarme entre las dos ventanas, pero parece que no puedo encontrar la manera de enviar una llamada de recarga al padre con él.

Cualquier consejo sobre la manera de hacer eso sería muy útil

graciasutilizando postmensaje para actualizar el documento principal de iframe

Respuesta

47

Uso:

window.parent.postMessage('Hello Parent Frame!', '*'); 

Nota el '*' indica "cualquier origen". Debe reemplazar esto con el origen objetivo si es posible.

En el marco padre que necesita:

window.addEventListener('message', receiveMessage, false); 

function receiveMessage(evt) 
{ 
    if (evt.origin === 'http://my.iframe.org') 
    { 
    alert("got message: "+evt.data); 
    } 
} 

Reemplazar "my.iframe.org" con el origen de su marco flotante. (Puede omitir la verificación de origen, solo tenga mucho cuidado con lo que hace con los datos que obtiene).

+0

Tenga en cuenta que IE no admite 'addEventListener' así que use jQuery bind o algo –

+1

Si tiene varios iframes dentro de cada uno, puede reemplazar _parent_ con _top_ para llegar a la página más alta: 'window.top.postMessage (' ¡Hola Parent Frame! ',' * '); ' –

Cuestiones relacionadas