2010-10-18 25 views
5

Me preguntaba cuál era la mejor manera de detectar cuándo una página ha terminado de cargarse, donde la página en cuestión está en una pestaña o ventana diferente, ... y donde la página que se va a cargar puede ser cualquier página en la web y no está bajo mi control.Javascript para detectar cuando una página se ha cargado en otra ventana en Firefox

estoy usando Firefox solamente y no me importa si la solución requiere una extensión de Firefox o script mono de grasa (que ya he añadido la configuración/comandos para permitir el acceso a las páginas de diferentes dominios).

El siguiente código muestra un intento. A veces detecta cuándo se cargó la página inicial, pero cuando presiono 'enviar' para volver a cargar una página nueva en la otra ventana, no la detecta.

Gracias.

<html> 
<head> 
<script type="text/javascript"> 

    currentPageObj = window.open("http://www.bbc.co.uk", "currentPage"); 

    currentPageObj.addEventListener("load", function(){alert("loaded")}, false); 

</script> 
</head> 
<body> 

    <form action="http://www.example.com" target="currentPage"> 
     <input type="submit"> 
    </form> 

</body> 
</html> 
+0

¿Las dos páginas provienen del mismo dominio? – Robusto

+0

No, podría ser cualquier página web – spiderplant0

Respuesta

1

En la otra página tienen un controlador de eventos onload que llama a un método en la ventana padre (window.opener) para hacer lo que quiera. p.ej. en la página secundaria:

window.addEventListener('load', function() { 
    if (window.opener && !window.opener.closed) { 
    window.opener.childLoaded(); 
    } 
}, false); 

Y haga que childLoad haga lo que desee en la ventana principal. (Nota: podría ser mejor mantener una referencia a la ventana con la que desea tratar, por ejemplo, inicializar var parentWindow = window;, porque cuando llama entre ventanas, esto puede resultar confuso.)

+0

Gracias andrewmu, pero olvidé mencionar que en la otra ventana estoy cargando una página de un dominio diferente del que no tengo control y, por lo tanto, no puedo editar esta página. – spiderplant0

+0

Ok ... eso es complicado entonces. A menos que haga una proxys inteligente a través de su servidor e inserte la respuesta adecuada en la página en su camino de regreso. P.ej. ponga lo anterior en una etiqueta de script que se inserte antes del de la respuesta antes de enviarlo al navegador. – andrewmu

Cuestiones relacionadas