我在 iframe 内加载了一个页面,该页面上是一个带有两个文件输入标签的表单元素,其目标设置为与表单位于同一页面内的 iframe。提交表单后,它将文件发送到 JSP 页面,在处理文件上传返回后,该页面会写出一些 javascript,通知用户上传已完成并执行一些其他处理。在 FF 和 Chrome 上,这个设置工作得很好,但由于某种原因,在 IE 中,而不是在 iframe 中加载表单操作,会弹出一个新窗口。
我将表单、输入和 iframe 插入到通过以下 javascript 加载到第一个 iframe 的页面的 DOM 中:
var containerDiv = document.createElement('div');
containerDiv.setAttribute("id", "containerDiv");
containerDiv.style.position = "absolute";
containerDiv.style.top = "360px";
containerDiv.style.left = "20px";
containerDiv.style.width = "300px"
var iFrame = document.createElement('iframe');
iFrame.setAttribute("id", "target-iframe");
iFrame.name = "target-iframe";
iFrame.style.visibility = "hidden";
iFrame.style.height = "50px";
var zipInput = document.createElement('input');
zipInput.setAttribute("type", "file");
zipInput.setAttribute("id", "zipInput");
zipInput.setAttribute("name", "test");
zipInput.setAttribute("title", "Test");
zipInput.style.marginBottom = "10px";
var pdfInput = document.createElement('input');
pdfInput.setAttribute("type", "file");
pdfInput.setAttribute("id", "pdfInput");
pdfInput.setAttribute("name", "test");
pdfInput.setAttribute("title", "Test");
var form = document.createElement('form');
form.setAttribute("id", "uploadForm");
form.setAttribute("enctype", "multipart/form-data");
form.setAttribute("action", "http://servername:8090/xmlserver/jsp/Upload.jsp?BatchID=" + CSForm.getField("BatchID").getValue());
form.setAttribute("method", "POST");
document.getElementById("DFS__pagediv1").appendChild(containerDiv);
document.getElementById("containerDiv").appendChild(form);
document.getElementById("containerDiv").appendChild(iFrame);
document.getElementById("uploadForm").appendChild(zipInput);
document.getElementById("uploadForm").appendChild(pdfInput);
我已经根据下面的代码将表单目标设置为 iframe 名称,但它仍然会为 IE 弹出一个新窗口。
document.getElementById('uploadForm').target = document.getElementById("target-iframe").name;
alert(document.getElementById('uploadForm').target);
document.getElementById('target-iframe').style.visibility="Visible";
document.getElementById("uploadForm").submit();
我希望这是我所缺少的基本内容,我非常感谢您可能拥有的任何帮助或解决方法。
先感谢您!