我的目标是打开一个新窗口并在该窗口中的当前页面上提交表单,同时保持原始窗口中的同一页面。然后,稍微暂停后,更改新窗口的URL。与仅将表格发布到' _blank'但我想保留新窗口的句柄,以便我可以用新的URL重新加载它。
这适用于Chrome和Firefox,但不适用于IE(IE11是我正在使用的)。在IE中,表单提交到当前页面而不是新窗口中的页面。因此,似乎将目标设置为新窗口并不适用于IE。这是IE不支持的吗?或者我需要使用不同的属性或语法吗?
理想情况下,我们发布的应用会自行重定向,但我无法改变这一点。更糟糕的是,它位于不同的域中,所以我不认为iFrame是一个选项(与ajax一起)。如果我在iframe解决方案上出错了,请纠正我
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
var cacheWin;
$(document).ready(function () {
var left = window.screenLeft ? window.screenLeft : window.screenX;
var top = window.screenTop ? window.screenTop : window.screenY;
//this will happen on page load
cacheWin = window.open('', 'cacheWin',
"screenX=" + left + ",screenY=" + top + ",left=" + left + ",top=" + top + ",width=1200,height=800,scrollbars=yes");
submitForm();
});
function submitForm() {
if (cacheWin) {
var $mainForm = $('#mainForm');
$mainForm.prop("target", "cacheWin");
//submit the form to our new window
$mainForm.submit();
cacheWin.focus();
showResponse(cacheWin);
} else {
//wait for a second and try again
window.setTimeout(function () {
submitForm();
}, 1000);
}
}
function showResponse(win) {
//after a delay to allow caching data to submit, show the content
window.setTimeout(function () {
displayContents(win);
}, 1000);
}
function displayContents(nwin) {
nwin.location = '<%=contentUrl%>';
}
</script>
表格:
<form id="mainForm" action="<%=cacheAction%>" method="POST">
.... inputs and some other stuff
</form>