Tengo una situación en una página donde un script en www.example.com/index.html abre home.example.com/foo .html en una ventana emergente. Cuando el usuario cierra la ventana emergente, quiero notificar a la página de apertura llamando a una función de Javascript (que hace algunas cosas con el DOM). Yo uso unbeforeunload
así:Ventana de lectura.location después de establecer document.domain en IE (6)
// In index.html on www.example.com:
window.fn = function() { /* Perform stuff after foo.html has closed */ }
// In foo.html on home.example.com:
window.onbeforeunload = function() {
if (window.opener && window.opener.fn)
window.opener.fn();
};
esto no funciona debido a que las páginas web se encuentran en diferentes dominios. Puedo establecer la propiedad document.domain
para superar esto:
document.domain = "example.com";
Por desgracia, este no juega bien con el marco de aplicación web que utilizo en el lado foo.html (Apache Wicket), ya que incluye un script que hace algo como esto:
var src = (window.location.protocol == 'https:') ? something : other;
al parecer, en IE6 *, cuando se establece el dominio de documentos, el objeto se convierte en location
de sólo escritura, y así tratar de leer window.location.protocol
tiros "Acceso denegado".
Entonces, mi pregunta es: ¿Cómo permito las llamadas a funciones de dominio entre dominios mientras sigo permitiendo que mis scripts lean el contenido del objeto location
?
- No puedo pasar por el servidor. (El trabajo realizado por la función que quiero llamar realmente no se reproduce de esa manera.)
- No puedo leer la propiedad
window.location.protocol
antes de establecerdocument.domain
y luego usar ese valor en la asignación condicional; Hacerlo me obligaría a reconstruir las bibliotecas del framework web, algo que no quiero hacer.
* Posiblemente en otras versiones de IE, también; no he verificado
Esta es probablemente mi mejor oportunidad. Gracias. – gustafc