使用IE上传iFrame文件会生成下载对话框

时间:2010-07-28 21:20:41

标签: javascript jquery html

我正在为Drupal开发一个处理文档管理的自定义模块。此时,模块加载,您可以上传文件(通过隐藏的iframe和一些ajax请求),浏览目录并设置各种级别的权限。一切都在Firefox中完美运行。

问题: 然而,在IE中,我遇到了一个问题。出于某种原因,当我上传文件时,弹出保存文件对话框并要求我下载刚刚上传的文件。看起来它要求我从web服务器tmp位置下载它,因为它似乎是文件名等。但是,如果我点击取消并刷新页面,我可以看到我上传的文件实际上已上传到服务器。

以下是上传过程的工作原理。

  1. 点击上传按钮。上传按钮是隐藏的标准文件输入表单元素,并放置在按钮的样式版本上。单击此按钮将打开“选择文件”对话框。
  2. 选择一个文件,然后单击“打开”。弹出模态对话框,询问您有关该文件的更多信息。模态是同一表单元素的一部分,但在单击上载按钮
  3. 之前保持不可见
  4. 单击模式中的保存会导致文件上载。表单上的“action”属性指向页面,目标是iframe。
  5. 每秒轮询iFrame几次以查看其内容是否已更改。上传文件后,iframe中会显示“成功”消息。由于它属于同一个域,因此我会删除iframe中的内容。
  6. 一旦iFrame说文件已经上传,我会用一些JS用文件名更新应用程序

由于我不能在IE中使用Firebug,我必须坚持使用微软Web开发人员工具栏,这使得很难弄清楚是否实际出现了粗体步骤。它似乎应该是,因为文件IS正在上传。它正在被文件下载对话中断。

1 个答案:

答案 0 :(得分:2)

由于似乎没有人有答案,我会发布我发现的修复程序。我怀疑它是完美的,但它是我能想到的最好的解决方案。


事实证明这是一个怀疑民意调查的问题。修复最终不是输出json到iFrame,只是输出一些调用更新主窗口的函数的JavaScript。那很简单。