2011-11-15 19 views
14

He creado un widget y necesito redirigir una ventana principal a cierta url, después de un evento específico en una ventana emergente, que se basa en otro dominio. Cómo puede hacer esto.¿Cómo obtener acceso desde ventanas emergentes entre sitios a window.opener?

window.opener.location.replace(url); 
+0

javascript inseguro intento de acceder al marco con url)) – NiLL

+0

Eso suena como scripts de dominio cruzado que se va a prevenir por limitaciones de seguridad; o estoy leyendo la pregunta incorrectamente? – COBOLdinosaur

+0

Quiero kmow, ¿puedo resolver estas limitaciones? – NiLL

Respuesta

27

Usted simplemente no puede hacer eso. Las secuencias de comandos entre sitios no están permitidas en la mayoría de los navegadores.

Puede, sin embargo, comunicarse con la otra ventana a través de mensajes entre documentos descritos aquí: https://developer.mozilla.org/en/DOM/window.postMessage

Lo más que se pueda para es el envío de un mensaje desde la ventana emergente para el primer partido y escuchar dichos mensajes en el abrelatas. El abridor luego tiene que cambiar su ubicación por sí mismo.

// popup: 
window.opener.postMessage('replace your location', '*'); 

// opener: 
window.onmessage = function (e) { 
    if (e.data === 'replace your location') { 
    window.location.replace(...); 
    } 
}; 
+2

FYI postMessage no funciona en IE entre ventanas emergentes, incluso en IE10 –

+0

Mi abrelatas debe estar en un dominio diferente de www.midominio.com. Quiero enviarle algunos datos confidenciales. ¿Cómo puedo verificar si mi abridor es realmente www.midominio.com? –

+0

Pero 'window.opener' en sí devuelve nulo en mi caso ... Entonces, ¿cómo voy a publicar el mensaje. –

Cuestiones relacionadas