Javascript 为什么';这个jquery表单在IE中提交工作是否正确?

Javascript 为什么';这个jquery表单在IE中提交工作是否正确?,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,我的目标是打开一个新窗口并在该窗口的当前页面上提交表单,同时保持在原始窗口的同一页面上。然后,稍作停顿后,更改新窗口的url。类似于将表单发布到“_blank”,但我希望在新窗口上保留一个句柄,以便可以使用新url重新加载它 这适用于Chrome和Firefox,但不适用于IE(我使用的是IE11)。在IE中,表单提交到当前页面,而不是新窗口中的页面。因此,将目标设置为新窗口似乎在IE中不起作用。这是IE不支持的吗?或者我需要使用不同的属性或语法吗 理想情况下,我们发布到的应用程序会自动重定向,

我的目标是打开一个新窗口并在该窗口的当前页面上提交表单,同时保持在原始窗口的同一页面上。然后,稍作停顿后,更改新窗口的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>

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?