日期:2014-05-16  浏览次数:20628 次

求助:IE11下,form提交的时候target指定页面失败
本帖最后由 u011933514 于 2013-10-11 14:48:52 编辑
问题背景,针对微软新发布的IE11,进行兼容作业。

我有一个form,form内有很多控件,有submit按钮,当submit按钮被按下时,会先调用一个js函数判断是否可以提交,如果可以提交的话则将onSubmit="return SubmitFlag;" 中的 SubmitFlag标志设置为true,并且打开一个空的html画面(之所以要用windows.open打开,而不是直接在target中用_blank,是为了设置这个弹出画面的大小,这是个非常小的画面,用来表示处理结果。)

from的代码:
<FORM METHOD="POST" ACTION="./trchange.exe?tim=1381473894" 
NAME="NODESECLET"  onReset='return false;' onSubmit="return SubmitFlag;" TARGET="OTHERWIN">


打开空html画面的代码:
OTHERWIN = window.open("../../Systemwalker/mpopagtx/blank.html", 
"OTHERWIN","width=" + (newWidth - 180) + ",height="+ (newHeight - 180) + 
"menubar=no,toolbar=no,status=yes,scrollbars=yes,,resizable=yes,,top=200,left=200");


如果执行正常,那么会在小页面中,显示./trchange.exe?tim=1381473894的内容,但是到了IE11中,变成了两个画面,原本应该被显示在小画面中的【./trchange.exe?tim=1381473894的内容】又另打开了一个window,而且画面奇大,囧!

请教高手解答,如果才能显示一个画面呢?(我把target换成了默认的其他设置,例如,_parent之类的,是有反应的,直接在当前画面表示了结果。)

如果实在没有办法的话,那我可不可以不打开小的空画面,直接设置另一个画面的大小呢??
------解决方案--------------------
我在win7+ie11下测试只有一个窗口Result of b!! 
------解决方案--------------------
个人猜测,两个可能性:
1.是否在form提交的时候,a.html还没有加载完,所以浏览器认为不存在abc窗口
2.由于浏览器设置的安全级别不一样,所以,你把form提交到另外一个己打开的页面是不允许的(另外提一下,你打开是直接浏览器打开页面:file:///xxxx/test.html;还是http://xxx.xx/test.html打开的页面,明白我的意思吗)

如果是1,可以试试把整个交互的逻辑改一下。
用window.open打开页面a.html,但此时test.html内的form不要提交
在a.html内写js来提交test.html的form
window.onload = function() {
    window.opener.document.getElementsByTagName('form')[0].submit();
}

如果是2,可以把浏览器的安全级别调到最低,而且一定要有服务器,用浏览器通过网址打开页面来测试.


如果以上都不靠谱,多的不要,给个10分吧,好歹写了这么多