2012-04-24 6 views
7

Ich kann die falsche Frage hier stellen, so werde ich eine kleine Menge an Details über das, was ich zu erreichen versuche bereitstellen.Detect redirect in iFrame

Ich verwende eine Drittanbieter-Web-App, um Support-Tickets zu verfolgen. Sie stellen den Code für ein Formular bereit, das meine Benutzer ausfüllen und an ihre Domain senden. Ich möchte dieses Formular auf zwei verschiedenen Domänen verwenden, aber leider verwendet die dritte Partei einen einzelnen hart codierten Umleitungswert. Dies führt dazu, dass eine meiner Websites nach der Übermittlung die Domain wechselt.

Ich dachte, ich könnte ihr Formular in einen iFrame einbetten, die Umleitung bei erfolgreicher Formularübermittlung erkennen und stattdessen auf eine meiner eigenen Seiten umleiten.

Pseudocode:

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

auf meine ursprüngliche Frage Also zurück - wie kann ich die Umleitung in der iframe erkennen?

+0

vielleicht können Sie das Formular Submit-Ereignis mit jQuery binden, handhaben Sie die Formularübermittlung selbst und überprüfen Sie den Antwortcode? –

+0

@RetoAebersold - großartige Idee, ich habe selbst darüber nachgedacht. Aber das Formular übermittelt Anhänge, so dass ich es nicht über AJAX senden kann. – mrtsherman

Antwort

9

könnten Sie versuchen,

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

den Rahmen Laden und erfrischende

zu erkennen und wenn die Umleitung auf der zweiten Last geschieht

//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++; 

}); 

, wenn es mehr Stufen sind nur die x ändern zur Anzahl der Stufen

if(timesRefreshed == x) 

das ist nicht der volle Beweis. Das heißt, wenn die andere Seite eine Stufe hinzufügen könnte, aber wenn es keine Kontrolle über die andere Seite gibt, dann kann es am besten sein.

+0

Gibt es ein Ereignis, das früher als die Last ausgelöst wird? Ich habe 'fertig' versucht, aber es hat nicht ausgelöst. Leider lädt der Iframe die ganze andere Webseite, bevor das 'load' Ereignis ausgelöst wird, also sieht es nicht sehr gut aus. – mrtsherman

+0

Hmm, trifft auch X-Domain-Ursprung Politik Probleme. Ich nehme an, das ist der Grund, warum Sie die Anzahl der Wiederholungen gewählt haben? – mrtsherman

+0

Yup. Der einzige Weg, an den ich denken kann, ist Refresh zu zählen, da sich die Site im Iframe auf einer anderen Domain befindet, so dass Sie aus Sicherheitsgründen nicht darauf zugreifen können. Ich habe ein Spiel und komme zurück zu dir. –