我正在使用隐藏的iframe方法提交文件而不加载新页面,它可以在除Internet Explorer之外的每个浏览器上运行,这很奇怪来自其他顶级浏览器。
表单和iframe看起来像这样:
<iframe id="hidden_upload" style="display:none" src="" name="hidden_upload" ></iframe>
<form class="" action="upload.php" method="post" target="hidden_upload" enctype="multipart/form-data" id="uploadForm">
<table>
<tbody>
<tr>
<td><label for = "title">Title: </label></td>
<td><input type="text" name="title" id="title" maxlength="40" style="width:300px;"/></td>
</tr>
<tr>
<td><label for="description">Description: </label></td>
<td><textarea id="description" name="description" style="width:460px;height:135px;"></textarea></td>
</tr>
<tr>
<td><label for="file">File: </label></td>
<td><input type="hidden" name="MAX_FILE_SIZE" value="3145728" /><input id="file" type="file" name="file"/></td>
</tr>
</tbody>
</table>
<center><input type="submit" value="Upload" id="filesubmit" onclick="return submitting()"/></center>
</form>
我有另一个在IE中工作的页面,在doc类型,form和iframe结构中没有明显的差异。
它也不是上传页面的标题,因为我尝试将工作表单的操作设置为非工作表单的上传页面,它仍然在IE中工作。
函数submitting
正在返回true。
编辑:
为了简洁起见,这也不起作用:
<form class="" action="upload.php" method="post" target="hidden_upload" enctype="multipart/form-data" id="importForm">
<input type="submit" />
</form>
<iframe id="hidden_upload" style="display:none" src="" name="hidden_upload" ></iframe>
编辑:这完全是荒谬的。我将工作页面逐字复制到非工作页面,但仍然无法正常工作。唯一的区别是目录,.htaccess文件是相同的。
答案 0 :(得分:3)
我遇到了这个问题,经过多次尝试,它只是按照这里解释的那样解决了:
“http://terminalapp.net/submitting-a-form-with-target-set-to-a-script-generated-iframe-on-ie/”
基本上,iframe需要以这种方式创建:
iframe = document.createElement('<iframe name="fileUploaderEmptyHole">');
我还发现当前窗口的帧名称存储在window.frames中。在IE11中,对于windows.frames中的所有iframe,属性.name为空:O
我手动修复如下:
for(i=0;i<window.frames.length;i++)
window.frames[i].name = window.frames[i].frameElement.name;
然后,您可以使用目标名称来获取帧。