2010-11-29 9 views
0

Ich habe eine App, die in einem neuen Fenster ausgeführt wird. Es gibt verschiedene Formulare, um einen PDF-Export zu generieren. Wenn ich eines dieser Formulare einreiche, verliert das Fenster seinen Fokus und das Originalfenster erscheint wieder, wenn der Download erscheint.Formular beobachten Antwort senden iFrame anzielen

Ich habe einen iframe erstellt, so dass die Formulare den iframe anvisieren können und das aktuelle Fenster seinen Fokus nicht verliert. Es funktioniert großartig, aber ich habe keine Ahnung, wie ich die Antwort im iFrame beobachten kann, wenn alles gut läuft.

Hier ist, wie es bisher funktioniert. Ich benutze PrototypJS.

<iframe id="pdf_frame" name="pdf_frame" style="display:none;"></iframe> 

<form id="PDF_gen" name="PDF_gen" target="pdf_frame" action="pdf.pl"> 
     <input type="hidden" name="size" value=""> 
     <!-- more hidden inputs --> 
</form> 
<input type="button" id="pdf_submit" value="generate pdf"> 

JS:

$('pdf_submit').observe('click', function(){ 
    //write stuff to hidden inputs 
    $('PDF_gen').submit(); 
}); 

Wenn etwas schief geht, erscheint der Download-Dialog nicht. Bei Verwendung von Prototypen form.request() weiß der Browser nicht, wie er mit der Antwort umgehen soll und ruft den Download-Dialog nicht auf. Wie kann ich es richtig machen?

Vielen Dank im Voraus!

Antwort

0

Wenn etwas schief geht in der iframe können Sie versuchen, aus dem iframe zu seinem übergeordneten Fenster ein Ereignis ausgelöst (vorausgesetzt, wir auf der gleichen Domäne sind, es nicht funktionieren Cross-Domain wird):

parent.document.fire('something:went_wrong') 

und haben das Dokument Eltern hören für dieses Ereignis:

document.observe('something:went_wrong', function() {...}); 
+0

sicher, aber ich will wissen nicht, ob etwas schief geht, weil ich die Statusantwort zugreifen kippe – koko