观察以iframe为目标的表单提交响应

时间:2010-11-29 08:28:08

标签: javascript forms prototypejs

我有一个在新窗口中运行的应用程序。有几种形式可以生成PDF导出。当我提交其中一个表单时,窗口会失去焦点,当下载出现时,原始窗口会再次弹出。

我创建了一个iframe,因此表单可以定位iframe,当前窗口不会失去焦点。它工作得很好,但我不知道如果一切正常,如何观察iframe内部的响应。

到目前为止,它的工作方式如下。我正在使用prototypeJS。

<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();
});

如果出现问题,则不会显示下载对话框。当使用原型form.request()时,浏览器不知道如何处理响应,也不会显示下载对话框。我该怎么办呢?

提前致谢!

1 个答案:

答案 0 :(得分:0)

iframe出现问题时,您可以尝试从iframe向其父窗口触发事件(假设我们在同一个域中;它不会跨域工作):

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

让父文件监听该事件:

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