javascript - 使用 IE 上传 iFrame 文件会产生下载对话框

标签 javascript jquery html

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

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

这是上传过程的工作原理。

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

因为我不能在 IE 中使用 Firebug,所以我不得不坚持使用 Microsoft 的 Web Developer Toolbar,这使得很难弄清楚加粗的步骤是否真的发生了。似乎应该如此,因为正在上传文件。它只是被文件下载对话打断了。

最佳答案

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


原来怀疑是轮询的问题。修复最终不是将 json 输出到 iFrame,而是输出一些调用更新主窗口的函数的 JavaScript。就这么简单。

关于javascript - 使用 IE 上传 iFrame 文件会产生下载对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3357594/

相关文章:

javascript - 这种浏览器技术有名称吗?

JavaScript:需要较低的 div(在绝对 div 下)而不是滚动

jQueryMobile、PhoneGap 和 ASP.NET MVC

javascript - 如何动态获取JQuery值到JavaScript?

html - div标签的边框图片样式

javascript - .innerHTML 将其存储到变量中时出现问题

java - Java 或 Javascript 中的分类 API

javascript - 元素重叠时移动

javascript - 在 <option> 标签内添加 span 并设置样式

html - 如何将此图像及其文本居中