Javascript 为什么';这个jquery表单在IE中提交工作是否正确?
我的目标是打开一个新窗口并在该窗口的当前页面上提交表单,同时保持在原始窗口的同一页面上。然后,稍作停顿后,更改新窗口的url。类似于将表单发布到“_blank”,但我希望在新窗口上保留一个句柄,以便可以使用新url重新加载它 这适用于Chrome和Firefox,但不适用于IE(我使用的是IE11)。在IE中,表单提交到当前页面,而不是新窗口中的页面。因此,将目标设置为新窗口似乎在IE中不起作用。这是IE不支持的吗?或者我需要使用不同的属性或语法吗 理想情况下,我们发布到的应用程序会自动重定向,但我无法改变这一点。更糟糕的是,它位于另一个域上,所以我不认为iFrame是一个选项(与ajax一起)。如果我在iframe解决方案上出错,请纠正我Javascript 为什么';这个jquery表单在IE中提交工作是否正确?,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,我的目标是打开一个新窗口并在该窗口的当前页面上提交表单,同时保持在原始窗口的同一页面上。然后,稍作停顿后,更改新窗口的url。类似于将表单发布到“_blank”,但我希望在新窗口上保留一个句柄,以便可以使用新url重新加载它 这适用于Chrome和Firefox,但不适用于IE(我使用的是IE11)。在IE中,表单提交到当前页面,而不是新窗口中的页面。因此,将目标设置为新窗口似乎在IE中不起作用。这是IE不支持的吗?或者我需要使用不同的属性或语法吗 理想情况下,我们发布到的应用程序会自动重定向,
<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>
var cacheWin;
$(文档).ready(函数(){
var left=window.screenlight?window.screenlight:window.screenX;
var top=window.screenTop?window.screenTop:window.screenY;
//这将在页面加载时发生
cacheWin=window.open(“”,“cacheWin”,
“screenX=“+left+”,screenY=“+top+”,left=“+left+”,top=“+top+”,宽度=1200,高度=800,滚动条=yes”);
submitForm();
});
函数submitForm(){
if(cacheWin){
var$mainForm=$(“#mainForm”);
$mainForm.prop(“target”、“cacheWin”);
//将表格提交到我们的新窗口
$mainForm.submit();
cacheWin.focus();
showResponse(cacheWin);
}否则{
//请稍等片刻,然后重试
setTimeout(函数(){
submitForm();
}, 1000);
}
}
功能showResponse(win){
//延迟一段时间以允许缓存数据提交后,显示内容
setTimeout(函数(){
显示内容(win);
}, 1000);
}
函数显示内容(nwin){
nwin.location='';
}
表格:
<form id="mainForm" action="<%=cacheAction%>" method="POST">
.... inputs and some other stuff
</form>
.... 输入和其他一些东西
我打赌IE代码会提交由于错误而从未调用的表单。检查控制台。好的,那么,为什么它在IE中不工作呢?逻辑在哪里失灵?进行一些调试。添加了对什么不起作用的解释。使用target=“\u blank”是否可以接受?(不知道这个问题的浏览器支持方面)@KevinB-见第一段。。。有没有办法在使用target=“\u blank”打开的窗口上获取“句柄”,以便我可以将其重定向到新的url?我在IE代码中打赌,提交表单不会因为错误而被调用。检查控制台。好的,那么,为什么它在IE中不工作呢?逻辑在哪里失灵?进行一些调试。添加了对什么不起作用的解释。使用target=“\u blank”是否可以接受?(不知道这个问题的浏览器支持方面)@KevinB-见第一段。。。是否有方法获取使用target=“\u blank”打开的窗口的“句柄”,以便我可以将其重定向到新的url?