2012-04-24 13 views
7

Es posible que esté haciendo la pregunta incorrecta aquí, así que proporcionaré una pequeña cantidad de detalles sobre lo que estoy tratando de lograr.Detectar redirección en iFrame

Utilizo una aplicación web de terceros para rastrear tickets de soporte. Proporcionan el código de un formulario que mis usuarios completan y envían a su dominio. Deseo utilizar este formulario en dos dominios diferentes, pero desafortunadamente el tercero usa un único valor de redirección codificado. Esto hace que uno de mis sitios cambie de dominio después del envío.

Estaba pensando que podía insertar su formulario en un iFrame, detectar la redirección en el envío exitoso del formulario y en su lugar redirigirlo a una de mis páginas.

Pseudocódigo:

iframe.detectRedirection 
if (redirect == 'xyz.html') { 
    //do my own redirection in main window. 
} 

Así que de vuelta a mi pregunta inicial - ¿cómo puedo detectar el cambio de dirección en el iframe?

+0

¿Puede vincular el evento de envío de formulario mediante jquery, manejar el envío de formulario usted mismo y verificar el código de respuesta? –

+0

@RetoAebersold - gran idea, de hecho pensé en esto yo mismo. Pero el formulario envía archivos adjuntos, por lo que no puedo enviarlo a través de AJAX. – mrtsherman

Respuesta

9

Usted podría intentar

$("iframe").load(function(){ 
    //The iframe has loaded or reloaded. 
}); 

para detectar la carga del marco y refrescante

y si la redirección sucede en la segunda carga

//var to count times iframe has loaded 
var timesRefreshed = 0; 

//detect iframe loading/refreshing 
$("iframe").load(function(){ 

    //if second refresh, change frame src - ie dont count first load 
    if(timesRefreshed == 1){ 
     $(this).attr("src","my site url here"); 
    } 

    //add to times resreshed counter 
    timesRefreshed++; 

}); 

si hay más etapas simplemente cambiar la x a la cantidad de etapas

if(timesRefreshed == x) 

esto no es una prueba completa. es decir, si podría romperse si el otro sitio agrega un escenario, etc. pero es lo mejor que puedo pensar si no tienes ningún control sobre el otro sitio.

+0

¿Hay algún evento que se active antes que la carga? Intenté 'listo', pero no se activó. Lamentablemente, el iframe carga todo el otro sitio web antes de que se active el evento 'load', por lo que no se ve muy bien. – mrtsherman

+0

Hmm, también afecta a los problemas de política de origen del dominio x. Supongo que esta es la razón por la que eligió ir por el número de veces actualizado. – mrtsherman

+0

Sí. La única forma en que puedo pensar es en contar actualizaciones ya que el sitio en el iframe está en otro dominio, por lo que no tendrá acceso a él por razones de seguridad. tendré una jugada y te responderé. –

Cuestiones relacionadas