【发布时间】:2011-07-15 18:50:58
【问题描述】:
我正在处理 AJAX 上传。由于 IE 没有所需的对象,我将不得不使用 iframe 解决方法。
理论上,这很简单:
- 创建表单和 iframe
- 更改表单的目标和 iframe 的名称属性
- 当输入文件字段发生变化时,会提交表单
此外,由于输入文件字段很烂,最好有一个“上传”按钮触发隐藏输入文件字段的点击事件以打开文件选择对话框。
是的,那是理论。实际上,情况要糟糕得多。首先,IE8 不知何故不喜欢克隆的 iframe,所以我们必须随时附加每个 iframe。然后,当尝试提交时,文件输入字段会被清除。
我知道会发生什么,什么时候发生,这很丑。
前往this example,它工作得很好。表单被克隆,文件字段有数据并提交表单。但是,文件输入没有名称属性,我无法在服务器端访问它。
所以我添加了属性here's the example,这就是发生的情况:文件字段被清除。只是因为name属性。
这可能是一个愚蠢的问题,但是有解决方法吗?我很清楚,如果文件输入字段被选中,它可以触发自动上传,但我想知道我是否可以不需要实际点击文件字段,就像在每个理智的浏览器中一样。
谢谢。
【问题讨论】:
-
我相信这是 IE 8 内置的安全措施,不允许您访问 input[type=file] 的 name 属性。
-
使用 plupload,一切就绪 :) plupload.com
-
@Ivan 我不想访问它。 @el 酋长,是的,我知道有很多库,但我喜欢不依赖闪存,而且我真的很喜欢自己做。
-
伟大而简单的解决方案:stackoverflow.com/questions/5191375/…
标签: jquery internet-explorer-8 file-io